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