Узнайте, как заполнять выпадающий список ComboBox в пользовательской форме Excel двумя способами: с помощью VBA-кода и параметра RowSource. Пошаговая инструкция, готовый шаблон, макросы и советы по практике.
Как правильно заполнить ComboBox в UserForm: два рабочих способа
Пользовательские формы в Excel VBA — это мощный инструмент автоматизации. Один из самых частых элементов на форме — это ComboBox. Но как его правильно заполнить? Как сделать это и через код, и через диапазон на листе?
В этой статье покажу оба способа, а также объясню:
- как правильно называть элементы;
- в каком событии инициализировать список;
- как не допустить ошибок;
- и как скачать готовый шаблон с работающей формой.
1. Что такое ComboBox?
Это выпадающий список, где пользователь может выбрать один из вариантов или даже ввести собственный. Часто применяется в формах:
- для выбора категории;
- фильтрации данных;
- заполнения справочников.
📌 Важно: ComboBox в формах UserForm не имеет свойства ListFillRange — вместо него используется RowSource.
2. Шаг 1. Задаём имена элементам формы
Перед тем как писать код, задай логичные имена всем элементам формы. Это помогает читать и отлаживать макросы.
Вот пример имён:
3. Шаг 2. Заполняем ComboBox вручную через VBA
Если список категорий небольшой и статичный — проще добавить их вручную.
Для этого используется событие UserForm_Initialize:
│ Private Sub UserForm_Initialize()
│ * Me.cmbCategory.AddItem "Development"*
│ * Me.cmbCategory.AddItem "IT and Software"*
│ * Me.cmbCategory.AddItem "Business"*
│ * Me.cmbCategory.AddItem "Design"*
│ * Me.cmbCategory.AddItem "Finance and Accounting"*
│ * Me.cmbCategory.AddItem "Personal Development"*
│ End Sub
📌 Список подставляется при каждом запуске формы.
4. Шаг 3. Заполняем ComboBox с листа Excel через RowSource
Если список категорий может расширяться — удобнее взять данные из диапазона на листе.
Что делаем:
- На отдельном листе создаём список категорий (например, Lists, диапазон A2:A13);
- Присваиваем этому диапазону имя: Categories;
- В свойствах ComboBox прописываем RowSource = Categories.
⚠️ Это всё задаётся не в коде, а в свойствах формы!
Пример кода на форме для первого варианта
│ Private Sub UserForm_Initialize()
│ * Me.cmbCategory.AddItem "Development"*
│ * Me.cmbCategory.AddItem "IT and Software"*
│ * Me.cmbCategory.AddItem "Business"*
│ * Me.cmbCategory.AddItem "Design"*
│ * Me.cmbCategory.AddItem "Finance and Accounting"*
│ * Me.cmbCategory.AddItem "Personal Development"*
│ End Sub
Ошибки, которые совершают чаще всего
Полезный совет
Можно использовать оба способа в зависимости от ситуации:
- AddItem — когда список фиксированный;
- RowSource — когда список может расширяться.
📥 Скачайте готовую форму с двумя вариантами заполнения ComboBox: и через VBA, и через лист Excel.
Заключение
Теперь вы знаете два надёжных способа, как наполнить ComboBox в UserForm. Выбирайте подходящий метод под свою задачу, и пусть ваши формы станут не только функциональными, но и удобными!
📢 Подписывайтесь на наш Дзен-канал — мы выкладываем только проверенные решения с макросами и шаблонами.
✍️ Напишите в комментариях, каким способом пользуетесь вы — через код или диапазон?