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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

10 комментариев для “VBA Excel. ComboBox — заполнение поля со списком”

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

    1. Спасибо за примеры, на одном все получилось. Чуток лишнее удалил и все ОК.
      Потому что пример привязан к тестовому объекту.
      Я тоже не мог понять, при отсутствии навыков.
      Но вот четко к полю привязку по примеру удалось сделать.
      Аналогично в powerpoint вставка поля со списком

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

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

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

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

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

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

  6. Я одного не пойму, а если у меня данные в строку расположены, почему я не могу загнать их в выпадающий список ComboBox?

    1. Евгений

      Можно добавить данные и из строки:

      1. Благодарю за внимание! Но я имел ввиду что данные для выпадающего списка расположены в строку на листе. То есть в ячейках. Например в диапазоне A1:H1.

        1. Евгений

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

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