Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

64

в результате чего ячейка A2 получает значение текста, введенного в поле элемента управления TextBox1. Выход из формы происходит при щелчке по кнопке Ok. При этом вызывается процедура формы

CommandButton1_Click и выполняется оператор Unload Me.

2.11.2.4. Элемент управления ComboBox (комбинированный список)

Этот элемент управления предоставляет пользователю возможность выбирать существующие значения из раскрывающегося списка и вводить в поле списка значение, которое отсутствует в списке.

Наиболее часто используются следующие свойства элемента

ComboBox.

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

Value (или Text) – позволяет программным способом установить выбранное значение в списке или вернуть выбранное или введенное пользователем значение.

Остальные свойства: AutoSize, Enabled, Locked, ControlText,

ControlTipText, MaxLength – применяются точно так же, как и для

TextBox.

Основное событие элемента ComboBox

это Change, то же, что

и для TextBox. Обычно при обработке этого

события проверяются

введенные пользователем значения, которые переносятся в текстовое поле.

Список значений элемента управления ComboBox может быть определён двумя способами:

должен храниться в диапазоне ячеек рабочей книги;

определяться, используя метод AddItem для добавления значения списка в элемент управления ComboBox.

Впервом способе в окне Properties устанавливается значение свойства RowSource в виде ссылки на диапазон листа рабочей книги, в

котором хранятся значения списка, например, Лист1!B1:B4 или КАРТАЛЫ, где КАРТАЛЫ – имя диапазона-строки или диапазонастолбца (рис. 21,а и рис. 21,б).

Рис. 21,а. Диапазон значений элемента управления ComboBox

65

Рис. 21,б. Ссылка на диапазон значений элемента управления ComboBox Значения диапазона ячеек рабочей книги можно менять программно.

Во втором способе значения элемента управления ComboBox создаются программно перед использованием формы и пропадают после её закрытия. Ниже приведена процедура Заполнение_ComboBox, заполняющая элемент управления ComboBox названиями кварталов с помощью метода AddItem. В этой процедуре ShouКвартал – имя формы, КВАРТАЛЫ – имя элемента управления ComboBox и значение свойства Caption формы ShouКвартал.

Public R As Variant

Sub Заполнение_ComboBox()

' Заполнение элемента управления ComboBox ShouКвартал.КВАРТАЛЫ.RowSource = “” ShouКвартал.КВАРТАЛЫ.AddItem “КВ1” ShouКвартал.КВАРТАЛЫ.AddItem “КВ2” ShouКвартал.КВАРТАЛЫ.AddItem “КВ3” ShouКвартал.КВАРТАЛЫ.AddItem “КВ4” ShouКвартал.Show

MsgBox “R=” & R End Sub

Кроме создания значений элемента управления ComboBox, в этой процедуре осуществляется вывод на экран формы ShouКвартал (используется метод Show) и значения переменной R. Переменная R получает значение в процедуре Ok_Click формы обработки события нажатия кнопки. Переменная R должна быть объявлена как Public перед самой первой стандартной процедурой. На рис.22 приведёна форма ShouКвартал, в которой значения элемента ComboBox получены любым из приведённых выше способов.

66

Рис. 22. Форма ShouКвартал

В форме ShouКвартал КВАРТАЛЫ – это заголовок формы, полученный присвоением параметру Caption значения КВАРТАЛЫ. Щелчок по кнопке Ok формы вызывает процедуру Ok_Click обработки этого события:

Private Sub Ok_Click()

Range(“A1”).Value = ShouКвартал.КВАРТАЛЫ.Value

R = ShouКвартал.КВАРТАЛЫ.Value

End Sub

В результате её выполнения ячейка A1 активного листа и переменная R получат значение выбранной позиции в списке (на рис. 22 это КВ2).

При нажатии кнопки “Выйти” выполняется процедура Выйти_Click формы модуля ShouКвартал:

Private Sub Выйти_Click()

Unload Me

End Sub

В результате выполнения процедуры Выйти_Click происходит выгрузка формы ShouКвартал из памяти.

2.11.2.5. Элемент управления ListBox (список)

Этот элемент управления предоставляет пользователю возможность выбирать только одно или несколько существующих значений из списка. Основные свойства, методы и события у ListBox те же, что и у ComboBox. Отличие состоит в том, что:

имеется свойство MultiSelect, позволяющее пользователю выбирать несколько значений (по умолчанию это свойство отключено);

пользователь не может вводить свои значения.

На рис. 23 приведена форма Месяцы, в которой выбираются значения из списка месяцы при помощи элемента управления ListBox. Значения списка месяцы хранятся в блоке ячеек месяцы листа Excel.

67

Рис. 23. Форма Месяцы

Имя списка месяцы задаётся в качестве параметра RowSource в табли-

це Properties элемента ListBox (рис. 24).

Рис. 24. Задание свойства параметра RowSource формы Месяцы

Для выбора нужного месяца нужно выделить его мышью в списке и щёлкнуть по кнопке Ok. При этом будет вызвана процедура обработки события Click кнопки Выйти_Click:

Private Sub Ok_Click() Range(“a1”).Value = Месяцы.Месяц.Value r = Range(“a1”).Value

End Sub

В результате в ячейку A1 будет помещено значение выбранного месяца и это же значение получит переменная r.

Загрузка формы осуществляется при помощи процедуры Поле_со_списком, хранящейся в стандартном модуле Module1:

Public r As Variant

Sub Поле_со_списком() Месяцы.Show