Найти в Дзене
Макрос решает

Как заполнить ComboBox в UserForm двумя способами: VBA и RowSource

Оглавление

Узнайте, как заполнять выпадающий список ComboBox в пользовательской форме Excel двумя способами: с помощью VBA-кода и параметра RowSource. Пошаговая инструкция, готовый шаблон, макросы и советы по практике.

Как правильно заполнить ComboBox в UserForm: два рабочих способа

Пользовательские формы в Excel VBA — это мощный инструмент автоматизации. Один из самых частых элементов на форме — это ComboBox. Но как его правильно заполнить? Как сделать это и через код, и через диапазон на листе?

В этой статье покажу оба способа, а также объясню:

  • как правильно называть элементы;
  • в каком событии инициализировать список;
  • как не допустить ошибок;
  • и как скачать готовый шаблон с работающей формой.

1. Что такое ComboBox?

Это выпадающий список, где пользователь может выбрать один из вариантов или даже ввести собственный. Часто применяется в формах:

  • для выбора категории;
  • фильтрации данных;
  • заполнения справочников.

📌 Важно: ComboBox в формах UserForm не имеет свойства ListFillRange — вместо него используется RowSource.

2. Шаг 1. Задаём имена элементам формы

Перед тем как писать код, задай логичные имена всем элементам формы. Это помогает читать и отлаживать макросы.

Вот пример имён:

-2

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

Если список категорий может расширяться — удобнее взять данные из диапазона на листе.

Что делаем:

  1. На отдельном листе создаём список категорий (например, Lists, диапазон A2:A13);
  2. Присваиваем этому диапазону имя: Categories;
  3. В свойствах 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

Ошибки, которые совершают чаще всего

-3

Полезный совет

Можно использовать оба способа в зависимости от ситуации:

  • AddItem — когда список фиксированный;
  • RowSource — когда список может расширяться.

📥 Скачайте готовую форму с двумя вариантами заполнения ComboBox: и через VBA, и через лист Excel.

Заключение

Теперь вы знаете два надёжных способа, как наполнить ComboBox в UserForm. Выбирайте подходящий метод под свою задачу, и пусть ваши формы станут не только функциональными, но и удобными!

📢 Подписывайтесь на наш Дзен-канал — мы выкладываем только проверенные решения с макросами и шаблонами.

✍️ Напишите в комментариях, каким способом пользуетесь вы — через код или диапазон?