Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Самостоятельная работа




End Sub

CurrentRegion

End If

Exit Sub

End If

Exit Sub

Dim n As Long

Dim r As Range

End Sub

CurrentRegion

Dim r As Range

End Sub

Dim n As Long

End Sub

Private Sub ListBox1_Click()

n = Application.WorksheetFunction.CountA(Columns(1))

Cells(n + 1, 1).Value = ListBox1.Text

Заполнение списка из диапазона

Задание 2

Учет поездок сотрудников некоторой фирмы.

  1. Создайте книгу с 3 рабочими листами: Города, Сотрудники и Поездки.
  2. На листе Города в диапазон А1:А5 введите названия городов, в которые намечены поездки сотрудников: например, Лондон, Париж, Нью-Йорк, Санкт-Петербург, Москва.
  3. На листе Сотрудники в столбец А, начиная с ячейки А1, введите фамилии сотрудников: Иванова, Никитина, Никифоров, Петров, Сидоров, Федоров.
  4. Создайте форму Заполнение списка из массива, которая содержит список (ListBox) с именами сотрудников, список (ListBox) с названиями городов и кнопку ОК. Списки в форме заполняются из диапазонов соответствующих рабочих листов (свойство RowSource объекта ListBox).
  5. Напишите программный код, выполняющий следующие действия:

При инициализации формы производится заполнение списков в форме. Список городов заполняется с явным указанием адреса диапазона (свойство RowSource объекта ListBox), а прежде чем заполнить список сотрудников, т.к. он может иметь переменный размер, происходит сначала идентификация диапазона, потом определение его адреса, а уже затем заполнение списка:

Dim r As Range

Set r = WorkSheets(“Сотрудники”).Range(“A1”)_

.CurrentRegion

ListBox.RowSource = r.Address(RowAbsolute:= False,_

ColumnAbsolute:= False, External:= True)

При нажатии кнопки ОК на листе Поездки в два столбца выводится список поездок сотрудников по городам. В первую очередь проверяется, были ли выбраны данные из списков (Если выбор не был осуществлен, то свойство ListIndex соответствующего объекта ListBox меньше 0. В этом случае выводится соответствующее сообщение, и происходит выход из подпрограммы.). Далее определяется номер первой свободной строки в списке из листа Поездки (свойство Count объекта Rows), и в нее выводятся выбранные данные из списков формы.

 

Выполнение:

Задайте следующие значения свойств для элементов управления:

 

Объект Свойство Значение
Список (ListBox1) Name lstName
Список (ListBox2) Name lstCity
Кнопка (CommandButton1) Name cmdOK
Caption OK

 

Программный код имеет вид:

Private Sub UserForm_Initialize()

lstCity.RowSource = “Города!A1:A5”

Set r = WorkSheets(“Сотрудники”).Range(“A1”)_

lstName.RowSource = r.Address(RowAbsolute:= False,_

ColumnAbsolute:= False,_

External:= True)

Private Sub cmdOK_Click()

If lstName.ListIndex < 0 Then

MsgBox «Не выбрано значение из списка Сотрудники»

If lstCity.ListIndex < 0 Then

MsgBox «Не выбрано значение из списка Города»

Set r = WorkSheets(“Поездки”).Range(“A1”)_

n = r.Rows.Count

WorkSheets(“Поездки”).Activate

Cells(n + 1, 1).Value = lstName.Text

Cells(n + 1, 2).Value = lstCity.Text

Лабораторная работа № 34

Согласованная работа двух списков

Задание:

Некоторое издательство сотрудничает с определенными магазинами в разных городах. Необходимо обеспечить согласованную работу двух списков. В одном из списков содержится перечень городов (например, Москва, Санкт-Петербург). При выборе элемента из этого списка во втором столбце должен отображаться перечень магазинов:

Москва: «Библеос-Глобус», «Дом книги», «Кнорус», «Мир»;

Санкт-Петербург: «Дом книги», «Техническая книга», «Прометей».

Замечание. Элементы массива могут иметь тип Variant, а переменной типа Variant может быть все, что угодно, в частности другой массив. Поэтому допустимо создание массива массивов.

Комментарии к написанию программного кода:

В области General необходимо описать переменную и массив типа Variant.

В подпрограмме инициализации формы необходимо в переменную типа Variant, описанную в общей области, передать список городов, а в массив типа Variant передать массивы магазинов каждого города. Затем заполнить список городов из формы и определить значение индекса по умолчанию в этом списке.

В подпрограмме обработки события Click для списка ListBox1 необходимо очистить от данных список ListBox2 и заполнить его данными с помощью значений массива с индексом, соответствующим значению индекса, выбранному в первом списке.

Выполнение:

Программный код имеет вид:

Dim City As Variant

Dim Shop(2) As Variant

Private Sub UserForm_Initialize()

City = Array(«Москва», «Санкт-Петербург»)

Shop(0) = Array(«Библеос-Глобус», «Дом книги», «Кнорус», «Мир»)

Shop(1) = Array(«Дом книги», «Техническая книга», «Прометей»)

ListBox1.List = City

ListBox1.ListIndex = 0

End Sub

Private Sub ListBox1_Click()

ListBox2.Clear

ListBox2.List = Shop(ListBox1.ListIndex)

End Sub

 

Создать форму пользователя, с помощью которой отдел оптовых продаж литературы распространяет книги по книжным магазинам разных городов.

Список магазинов:

 

в Воронеже: «Амиталь»; «Техническая книга»; «Книжный мир семьи»;
в Москве: «Библеос»; «Глобус»; «Книжный мир»;
в Курске: «Кнорус»; «Дом книги»;
в Белгороде: «Прометей»; «Библиосфера».

Рабочая книга MS Excel содержит 2 листа:

«Книги» с исходной информацией о названиях книг (столбец А) и ценах одного экземпляра (столбец В);

«Отправка» с конечной информацией, представленной в виде:

 

Город Магазин Книга Цена одной книги Количество Стоимость
           

 

Форма содержит:

список Книги;

2 согласованных списка Города и Магазины;

кнопку ОК.

Приложение работает по следующему сценарию:

Список Книги заполняется с помощью массива, расположенного на Листе «Книги».

Списки Города и Магазины заполняются с помощью массивов как согласованные.

При нажатии на кнопку ОК проверяется, выбраны ли значения во всех трех списках. При отсутствии выбора строки в каком-либо списке выдается соответствующее сообщение, и программа прекращает работу.

Затем открывается окно ввода для указания количества отправляемых экземпляров выбранной книги.

Цена одного экземпляра книги передается из соответствующей ячейки рабочего Листа «Книги». Затем рассчитывается стоимость отправляемой партии книг.

Заполняется таблица на рабочем Листе «Отправка».

Лабораторные работы № 35 -36

Использование оператора If … Then … Else в функции пользователя

Задание 1

Создайте функцию пользователя для расчета по формуле:

Начальные данные имеют вид:

x z
-5,5  
  2,3
   
3,25  
-8,4 2,6
-1,5  
6,7 2,9

 

Выполнение:

1. Создайте на рабочем листе таблицу с начальными данными и предусмотрите столбец для вывода результата.

2. Перейдите в редактор Visual Basic. Добавьте в проект модуль (Insert → Module).

3. Для создания функции пользователя выполните команду: Insert → Procedure. В открывшемся окне Добавления процедуры (Add Procedure) введите имя функции (например, FFF), выберите в рамке Type переключатель Function, в рамке ScopePublic.

4. В открывшемся окне кода введите следующий программный код:




Поделиться с друзьями:


Дата добавления: 2017-01-14; Просмотров: 280; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.