ComboBoxes позволяют пользователям выбирать вариант из раскрывающегося списка меню. ComboBox можно создавать в пользовательских формах VBA или с помощью листа Excel. В этом руководстве вы узнаете, как создавать поля со списком и управлять ими в VBA и на листах Excel.
Если вы хотите узнать, как создать список, щелкните здесь: Список VBA
Если вы хотите узнать, как создать флажок, щелкните здесь: флажок VBA
Создать ComboBox на листе Excel
Чтобы вставить ComboBox в рабочий лист, вам нужно перейти к Вкладка разработчиканажмите Вставлять и в разделе ActiveX Controls выберите Поле со списком:
Изображение 1. Вставьте ComboBox в рабочий лист
Когда вы выбираете ComboBox, который вы вставили, вы можете нажать на Характеристики под Вкладка разработчика:
Изображение 2. Изменение свойств ComboBox
Здесь вы можете установить различные свойства ComboBox. Для начала изменили атрибут Имя к cmbComboBox. Теперь мы можем использовать ComboBox с этим именем в коде VBA.
Заполните ComboBox в коде VBA
Во-первых, нам нужно заполнить ComboBox значениями. В большинстве случаев ComboBox необходимо заполнить при открытии Workbook. Из-за этого нам нужно поместить код для заполнения ComboBox в объекте Рабочая тетрадь, процедура Открытым. Эта процедура выполняется каждый раз, когда пользователь открывает книгу. Вот код:
123456789 | С Sheet1.cmbComboBox.AddItem "Джон".AddItem "Майкл".AddItem "Дженнифер".AddItem "Лилли".AddItem "Роберт"Конец с |
Когда вы нажимаете на раскрывающееся меню, вы получаете 5 имен на выбор (Джон, Майкл, Дженнифер, Лилли и Роберт):
Изображение 3. Заполните ComboBox в VBA
Заполнение ComboBox из диапазона ячеек
Другой возможный способ заполнить ComboBox - позволить пользователю сделать это. ComboBox можно связать с диапазоном ячеек. В этом подходе каждый раз, когда пользователь вводит новое значение в диапазоне ячеек, ComboBox обновляет это значение.
Если вы хотите включить это, вам нужно перейти в Характеристики ComboBox и установите атрибут ListFillRange в диапазон ячеек (в нашем случае E2: E5):
Изображение 4. Заполните ComboBox из диапазона ячеек.
Мы связали наш ComboBox с диапазоном E2: E5, в который мы поместили нужные имена (Натан, Гарри, Джордж, Роберта). В результате ComboBox теперь заполнен этими именами:
Изображение 5. ComboBox заполнен из диапазона ячеек.
Получить выбранный элемент ComboBox в VBA
Назначение ComboBox - предоставить пользователю выбор. Чтобы получить выбор пользователя, вам необходимо использовать этот код:
123 | Dim strSelectedItem как вариантstrSelectedItem = Sheet1.cmbComboBox.Value |
Выбор пользователей находится в атрибуте Ценить из Sheet1.cmbComboBox объект. Это значение присваивается переменной strSelectedItem:
Изображение 6. Получите выбранное значение из ComboBox в VBA.
Мы выбрали Юлия в ComboBox и выполнил процедуру. Как вы можете видеть на рисунке 5, значение strSelectedItem является Юлия, которое и является выбранным нами значением. Теперь вы можете дальше обрабатывать эту переменную в коде.
Очистить ComboBox
Если вы хотите очистить ComboBox в VBA, вам необходимо использовать Прозрачный метод Sheet1.lstComboBox объект. Он удалит все элементы из ComboBox. Вот код:
1 | Sheet1.cmbComboBox.Clear |
Когда мы выполняем код, мы получаем пустой ComboBox:
Изображение 7. Очистите ComboBox.
Использование ComboBox в пользовательской форме
Как мы уже упоминали, Combobox чаще всего используется в пользовательских формах. Чтобы объяснить, как это сделать, мы сначала вставим пользовательскую форму. В редакторе VBA щелкните правой кнопкой мыши имя модуля, выберите Вставлять и выберите UserForm:
Изображение 8. Вставьте пользовательскую форму
Чтобы отобразить элементы управления для вставки, необходимо включить Ящик для инструментов. Для этого нажмите наЯщик для инструментов значок на панели инструментов. После этого вы получите окна со всеми доступными элементами управления. Вы можете нажать на Поле со списком создать его в пользовательской форме.
Изображение 9. Вставьте ComboBox в пользовательскую форму.
Назовем ComboBox cmbComboBox. Чтобы заполнить его значениями, нам нужно вставить следующий код в метод Инициализировать объекта UserForm:
12345678910111213 | Частная подписка UserForm_Initialize ()С UserForm1.cmbComboBox.AddItem "Джон".AddItem "Майкл".AddItem "Дженнифер".AddItem "Лилли".AddItem "Роберт"Конец сКонец подписки |
Этот код срабатывает каждый раз, когда пользователь запускает пользовательскую форму и заполняет поле со списком этими 5 именами:
Изображение 10. ComboBox со значениями в пользовательской форме.
Если вы хотите получить выбранное значение из ComboBox, вам необходимо использовать ту же логику для Combobox на рабочем листе, которая объяснялась ранее в статье.