Элемент управления 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
Рис. 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 получены любым из приведённых выше способов.
Рис.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Квартал из памяти.