Перейти к содержимому

VBA Excel. ComboBox — заполнение поля со списком

Способы заполнения ComboBox данными с помощью кода VBA Excel. Добавление в поле со списком значений для выбора с помощью метода AddItem, из массива и из диапазона ячеек рабочего листа.

  1. Заполнение ComboBox методом AddItem
  2. Заполнение ComboBox значениями из массива
  3. Заполнение ComboBox значениями из ячеек

Заполнение ComboBox методом AddItem

Создайте пользовательскую форму UserForm1 и разместите на ней поле со списком ComboBox1. Используйте метод AddItem для заполнения элемента управления значениями:

Sub Test1()
    With UserForm1.ComboBox1
        .AddItem "Кружка"
        .AddItem "Стакан"
        .AddItem "Бокал"
        .AddItem "Пиала"
        .AddItem "Фужер"
    End With
UserForm1.Show
End Sub

Скопируйте код и запустите его выполнение, на открывшейся форме раскройте поле со списком, в результате увидите, что элемент управления ComboBox1 заполнен соответствующими значениями:

ComboBox, заполненный значениями методом .AddItem

Заполнение ComboBox значениями из массива

Для заполнения элемента управления ComboBox значениями из массива будем использовать свойство поля со списком List и функцию Array:

Sub Test2()
    With UserForm1
        .ComboBox1.List = Array("Кружка", "Стакан", "Бокал", "Пиала", "Фужер")
        .Show
    End With
End Sub

Результат выполнения кода будет таким же, как и на предыдущем изображении.

Таким же образом можно использовать не только функцию Array, но и переменную массива, предварительно объявленную и заполненную значениями:

Sub Test3()
    Dim a(4) As String
        a(0) = "Кружка"
        a(1) = "Стакан"
        a(2) = "Бокал"
        a(3) = "Пиала"
        a(4) = "Фужер"
    With UserForm1
        .ComboBox1.List = a
        .Show
    End With
End Sub

Заполнение ComboBox значениями из ячеек

Для заполнения поля со списком значениями из диапазона ячеек рабочего листа будем использовать свойство комбинированного списка RowSource, предварительно заполнив диапазон "A1:A5" активного листа уже известными значениями:

Sub Test4()
    With UserForm1
        .ComboBox1.RowSource = "A1:A5"
        .Show
    End With
End Sub

ComboBox, заполненный значениями из диапазона ячеек

Чтобы присвоить элементу управления ComboBox значения из диапазона ячеек любого рабочего листа, добавьте ссылку на него перед наименованием диапазона, например, замените "A1:A5" на "Лист1!A1:A5", и поле со списком будет заполнено значениями ячеек "A1:A5", расположенных на листе с именем "Лист1".

Эти же способы используются и для заполнения значениями элемента управления ListBox.

Иногда возникает необходимость заполнения элементов управления ListBox и ComboBox уникальными значениями из диапазона ячеек с повторяющимся содержимым. Смотрите, как отсортировать уникальные элементы из списка.