Как строится поле с раскрывающимся списком combobox
Элемент ComboBox образует выпадающий список и совмещает функциональность компонентов ListBox и TextBox. Для хранения элементов списка в ComboBox также предназначено свойство Items .
Подобным образом, как и с ListBox, мы можем в окне свойств на свойство Items и нам отобразится окно для добавления элементов ComboBox:
И как и с компонентом ListBox, здесь мы также можем программно управлять элементами.
При добавлении с помощью методов Add / AddRange все новые элементы помещаются в конец списка. Однако если мы зададим у ComboBox свойство Sorted равным true , тогда при добавлении будет автоматически производиться сортировка.
Мы можем получить элемент по индексу и производить с ним разные действия. Например, изменить его:
Настройка оформления ComboBox
С помощью ряда свойств можно настроить стиль оформления компонента. Так, свойство DropDownWidth задает ширину выпадающего списка. С помощью свойства DropDownHeight можно установить высоту выпадающего списка.
Еще одно свойство MaxDropDownItems позволяет задать число видимых элементов списка — от 1 до 100. По умолчанию это число равно 8.
Другое свойство DropDownStyle задает стиль ComboBox. Оно может принимать три возможных значения:
Dropdown : используется по умолчанию. Мы можем открыть выпадающий список вариантов при вводе значения в текстовое поле или нажав на кнопку со стрелкой в правой части элемента, и нам отобразится собственно выпадающий список, в котором можно выбрать возможный вариант
DropdownList : чтобы открыть выпадающий список, надо нажать на кнопку со стрелкой в правой стороне элемента
Simple : ComboBox представляет простое текстовое поле, в котором для перехода между элементами мы можем использовать клавиши клавиатуры вверх/вниз
Событие SelectedIndexChanged
Наиболее важным событием для ComboBox также является событие SelectedIndexChanged , позволяющее отследить выбор элемента в списке:
Как строится поле с раскрывающимся списком combobox

Private Sub Commandl_Click ()
Щелкают по кнопке
Поле со списком на панели элементов и в полосе Область данных, где будет располагаться поле. При этом загружается мастер и открывается первое диалоговое окно.
VBA Excel. Элемент управления ComboBox (поле со списком)

ComboBox представляет из себя комбинацию двух элементов управления: текстового поля (TextBox) и списка (ListBox), поэтому его еще называют «комбинированным списком» или «полем со списком». Также ComboBox сочетает в себе свойства этих двух элементов управления.
Изначально комбинированный список прорисовывается на форме в виде текстового поля с кнопкой для отображения раскрывающегося списка. Далее по тексту будем использовать слово «поле» в значении текстового поля в составе элемента управления ComboBox, а словосочетание «раскрывающийся список» – в значении списка в составе элемента управления ComboBox.
Поле со списком используется в тех случаях, когда необходимо добавить в форму информацию, которая заранее известна, а ее отдельные позиции можно сгруппировать в список, а также для ручного ввода с клавиатуры или вставки из буфера обмена, если необходимое значение в списке отсутствует.
Элемент управления ComboBox незаменим при больших списках. При списках из нескольких позиций его можно заменить на ListBox, который отображает позиции для выбора сразу после загрузки формы, не требуя дополнительных действий от пользователя.
Свойства поля со списком
| Свойство | Описание |
|---|---|
| AutoSize | Автоподбор размера комбинированного поля. True – размер автоматически подстраивается под длину выбранной или введенной строки. False – размер элемента управления определяется свойствами Width и Height. |
| AutoTab | Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена. |
| ColumnCount | Указывает количество столбцов в раскрывающемся списке. Значение по умолчанию = 1. |
| ColumnHeads | Добавляет строку заголовков в раскрывающийся список. True – заголовки столбцов включены, False – заголовки столбцов выключены. Значение по умолчанию = False. |
| ColumnWidths | Ширина столбцов в раскрывающемся списке. Значения для нескольких столбцов указываются в одну строку через точку с запятой (;). |
| ControlSource | Ссылка на ячейку для ее привязки к элементу управления ComboBox. |
| ControlTipText | Текст всплывающей подсказки при наведении курсора на элемент управления. |
| Enabled | Доступ пользователя к полю и раскрывающемуся списку. True – доступ разрешен, False – доступ запрещен*. Значение по умолчанию = True. |
| Font | Шрифт, начертание и размер текста в поле. |
| Height | Высота элемента управления ComboBox. |
| Left | Расстояние от левого края внутренней границы пользовательской формы до левого края комбинированного списка. |
| List | Позволяет заполнить ComboBox данными из одномерного или двухмерного массива, а также обращаться к отдельным элементам раскрывающегося списка по индексам для записи и чтения. |
| ListIndex | Номер выбранной пользователем строки в раскрывающемся списке. Нумерация начинается с нуля. Если ничего не выбрано, ListIndex = -1. |
| ListRows | Количество видимых строк в раскрытом списке. Если общее количество строк больше ListRows, появляется полоса прокрутки. Значение по умолчанию = 8. |
| Locked | Запрет на отображение раскрывающегося списка, ввод и редактирование данных в поле. True – ввод и редактирование запрещены**, False – ввод и редактирование разрешены. Значение по умолчанию = False. |
| MatchRequired | Задает проверку вводимых в поле строк с элементами списка. True – проверка включена (допускается ввод только строк, совпадающих с элементами списка), False – проверка выключена (допускается ввод любых строк). Значение по умолчанию = False. |
| MaxLenght | Максимальная длина строки в поле. Значение по умолчанию = 0, что означает – ограничений нет. |
| RowSource | Источник строк для раскрывающегося списка (адрес диапазона на рабочем листе Excel). |
| TabIndex | Целое число, определяющее позицию элемента управления в очереди на получение фокуса при табуляции. Отсчет начинается с 0. |
| Text | Текстовое содержимое (значение) поля (=Value). |
| TextAlign | Выравнивание текста в поле: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю. |
| Top | Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края комбинированного списка. |
| Value | Текстовое содержимое (значение) поля (=Text). |
| Visible | Видимость поля со списком. True – ComboBox отображается на пользовательской форме, False – ComboBox скрыт. |
| Width | Ширина элемента управления. |
* При Enabled в значении False пользователь не может раскрывать список, а также вводить или редактировать данные в поле.
** Для элемента управления ComboBox действие свойства Locked в значении True аналогично действию свойства Enabled в значении False.
В таблице перечислены только основные, часто используемые свойства поля со списком. Еще больше доступных свойств отображено в окне Properties элемента управления ComboBox, а все методы, события и свойства – в окне Object Browser.
Вызывается Object Browser нажатием клавиши «F2». Слева выберите объект ComboBox, а справа смотрите его методы, события и свойства.
Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление комбинированного списка и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления ComboBox на проекте пользовательской формы.
Способы заполнения ComboBox
Используйте метод AddItem для загрузки элементов в поле со списком по одному:
Работа со списками
Создать на форме 2 списка: один в верхней, а другой в нижней половине формы.
Дважды щелкнуть на форме, чтобы открыть окно программного кода формы. Добавить в процедуру события Form_Loadфрагмент:
Private Sub Form_Load()
Добавить в процедуру события DblClickList1 фрагмент:
List2.AddItemList1.Text’ включить строку в другой список
List1.RemoveItemList1.ListIndex’удалить строку из данного списка
Добавить в процедуру события DblClickList2 фрагмент:
List1.AddItemList2.Text’ включить строку в другой список
List2.RemoveItemList2.ListIndex’удалить строку из данного списка
Запустить программу и двойным щелчком на любой строке списка переместить её в другой список и наоборот.
Т. о. сначала строка добавляется в другой список, а затем уже удаляется из текущего.
Комбинированное поле (ComboBox)
Комбинированные поля сочетают возможности текстового поля и списка. В списке невозможно непосредственно отредактировать строку или выбрать строку, отсутствующую в нем. Имя комбинированного поля использует префикс cbo.
Комбинированное поле может быть раскрывающимся, тогда оно займет в форме меньше места, чем список. В режиме конструирования доступны 3 разновидности комбинированных полей:
При этом тип поля определяется свойством Style.
Хотя комбинированные поля по свойствам, методам и событиям похожи на списки, свойство Textв них работает иначе. Если в списке оно может только вернуть текст выделенной строки, то для комбинированных полей значение этого поля можно задавать и при выполнении программы: текст задается даже в том случае, если строка отсутствует в списке.
Свойства комбинированных полей
Многие свойства такие же, как и для списков.
Особую роль играет свойствоStyleкомбинированного списка. Оно может принимать 3 значения (0 – 2), определяющих вид поля:раскрывающееся комбинированное поле; простое комбинированное поле и раскрывающийся список.
Раскрывающееся поле— похоже на стандартное текстовое, но справа имеется кнопка со стрелкой, которое раскрывает список.
Именно этот вариант называется комбинированным полем.
Простое поле – в котором список постоянно открыт.
Раскрывающийся списоквнешне похож на раскрывающееся комбинированное поле, но пользователь ограничен строками, входящими в список. Преимущество его перед обычным списком то, что он занимает мало места.
События комбинированных полей
Change отсутствует в раскрывающихся списках, т. к. в них запрещено редактирование.
DblClickимеет отношение только к простым спискам, т. к. в них можно видеть весь список
Методы комбинированных полей
Совпадают с методами списков (AddItem,Clear,RemoveItemи т. п.)
Комбинированные поля заполняются также вызовами метода AddItemв процедуруLoadформы.
Пример работы с комбинированным полем
Ввести в форму элемент список (ListBox) –List1 и удалить значение свойстваListItemсписка. Ввести комбинированный список (ComboBox) –Combo1 и установить в свойствеStyleзначениеDropdownCombo(комбинированное поле).