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

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 уникальными значениями из диапазона ячеек с повторяющимся содержимым. Смотрите, как отсортировать уникальные элементы из списка.

Вы можете скачать файл Excel с представленными выше примерами. Файл упакован в ZIP-архив. Для проверки работоспособности кода, непосредственно в редакторе VBA помещайте курсор внутри тела каждой процедуры и нажимайте кнопку «Run Sub».

VBA Excel. ComboBox – заполнение поля со списком: 5 комментариев

  1. Оксана

    Не получился ни один из предложенных вариантов( С чем это может быть связано?

  2. Евгений (автор статьи)

    Оксана, скорее всего у вас имена UserForm и ComboBox другие, чем в приведенных примерах. Я сегодня в конце статьи размещу файл для скачивания с этими примерами.

  3. Оксана

    Евгений, подскажите, а где в Вашем примере пользовательская форма? Что бы наглядно посмотреть)

  4. Оксана

    Или это что-то у меня((( При нажатии на Run Sub в вашем файле, у меня тоже нет списка(

  5. Евгений (автор статьи)

    UserForm1 находится в папке «Forms» в проводнике редактора VBA под строчкой «ЭтаКнига». Возможно, у вас в параметрах Excel отключены макросы, поэтому коды не работают.

Добавить комментарий

Ваши комментарии, отправленные после 19 мая, будут опубликованы в конце мая после выхода на работу модератора. Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.