Заполнение ComboBox данными с помощью кода VBA Excel. Добавление значений в поле со списком методом AddItem, из массива и из диапазона рабочего листа. Примеры.
Заполнение ComboBox методом AddItem
Создайте пользовательскую форму UserForm1 и разместите на ней поле со списком ComboBox1. Используйте метод AddItem для заполнения элемента управления значениями:
1 2 3 4 5 6 7 8 9 10 |
Sub Test1() With UserForm1.ComboBox1 .AddItem "Кружка" .AddItem "Стакан" .AddItem "Бокал" .AddItem "Пиала" .AddItem "Фужер" End With UserForm1.Show End Sub |
Скопируйте код и запустите его выполнение, на открывшейся форме раскройте поле со списком, в результате увидите, что элемент управления ComboBox1 заполнен соответствующими значениями:
Заполнение ComboBox значениями из массива
Для заполнения элемента управления ComboBox значениями из массива будем использовать свойство поля со списком List и функцию Array:
1 2 3 4 5 6 |
Sub Test2() With UserForm1 .ComboBox1.List = Array("Кружка", "Стакан", "Бокал", "Пиала", "Фужер") .Show End With End Sub |
Результат выполнения кода будет таким же, как и на предыдущем изображении.
Таким же образом можно использовать не только функцию Array, но и переменную массива, предварительно объявленную и заполненную значениями:
1 2 3 4 5 6 7 8 9 10 11 12 |
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” активного листа уже известными значениями:
1 2 3 4 5 6 |
Sub Test4() With UserForm1 .ComboBox1.RowSource = "A1:A5" .Show End With End Sub |
Чтобы присвоить элементу управления ComboBox значения из диапазона ячеек любого рабочего листа, добавьте ссылку на него перед наименованием диапазона, например, замените “A1:A5” на “Лист1!A1:A5”, и поле со списком будет заполнено значениями ячеек “A1:A5”, расположенных на листе с именем “Лист1”. Имя листа берется из наименования ярлыка.
Более подробно о заполнении данными ComboBox можно прочитать в статье о заполнении ListBox, так как оба эти элемента управления используют одинаковые способы заполнения.
Иногда возникает необходимость заполнения элементов управления ListBox и ComboBox уникальными значениями из диапазона ячеек с повторяющимся содержимым. Смотрите, как отсортировать уникальные элементы из списка с помощью объектов Collection и Dictionary.
Вы можете скачать файл Excel с представленными выше примерами. Файл упакован в ZIP-архив. Для проверки работоспособности кода, непосредственно в редакторе VBA помещайте курсор внутри тела каждой процедуры и нажимайте кнопку «Run Sub».
Не получился ни один из предложенных вариантов( С чем это может быть связано?
Оксана, скорее всего у вас имена UserForm и ComboBox другие, чем в приведенных примерах. Я сегодня в конце статьи размещу файл для скачивания с этими примерами.
Евгений, подскажите, а где в Вашем примере пользовательская форма? Что бы наглядно посмотреть)
Или это что-то у меня((( При нажатии на Run Sub в вашем файле, у меня тоже нет списка(
UserForm1 находится в папке «Forms» в проводнике редактора VBA под строчкой «ЭтаКнига». Возможно, у вас в параметрах Excel отключены макросы, поэтому коды не работают.