VBA Excel. ListBox – заполнение списка данными

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


    В примерах используется событие пользовательской формы UserForm_Initialize, реализуемое в модуле формы. Это очень удобно при тестировании, когда запуск формы или кода приводит к одному результату. Кроме того, из модуля формы обращаться к форме можно с помощью ключевого слова «Me».

    Создайте в редакторе VBA Excel пользовательскую форму с любым именем и разместите на ней список с именем ListBox1. Вставляйте в модуль формы код примера, запускайте код или форму и смотрите результат.

    Чтобы запустить форму, фокус должен быть на ее проекте или на одном из ее элементов управления. Чтобы запустить код, курсор должен быть в одной из его строк. Запускается код или форма нажатием клавиши «F5» или треугольной кнопки «Run Sub/UserForm»:

    Кнопка «Run Sub/UserForm» в редакторе VBA

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

    Метод AddItem используется для загрузки отдельного элемента в ListBox. Он создает в списке новую строку и записывает в нее значение. Используя цикл, можно загрузить в ListBox одномерный массив.

    Пример 1
    Загрузка элементов в ListBox по отдельности:

    Результат работы кода:

    Элемент управления ListBox на пользовательской форме

    Пример 2
    Загрузка данных в ListBox из одномерного массива при помощи цикла VBA Excel:

    Заполнение ListBox с помощью свойства List

    Свойство List позволяет в коде VBA Excel скопировать целиком одномерный или двухмерный массив значений в элемент управления ListBox. А также добавлять данные в элементы двухмерного списка по их индексам в строки, созданные методом AddItem.

    Пример 3
    Заполнение списка данными из одномерного массива.

    Загрузка значений, возвращенных функцией Array:

    Загрузка значений из переменной одномерного массива:

    Пример 4
    Заполнение списка данными из двухмерного массива.

    Результат получается следующий:

    ListBox с тремя столбцами

    Пример 5
    Заполнение списка с тремя столбцами по каждому элементу отдельно. Создаем строку и записываем значение в первый столбец методом AddItem. Значения во второй и третий столбцы записываем с помощью свойства List по индексам:

    Результат работы кода будет таким же, как в Примере 4.

    Заполнение ListBox с помощью свойства RowSource

    Свойство RowSource позволяет загрузить в элемент управления ListBox значения из диапазона ячеек на рабочем листе Excel. Задать адрес диапазона свойству RowSource можно как в ходе выполнения кода VBA, так и в окне Properties элемента управления ListBox.

    Окно Properties-ListBox

    Адрес диапазона ячеек для свойства RowSource указывается по следующей формуле: "Имя_листа!Адрес_диапазона". Имя_листа соответствует имени листа по ярлыку. Адрес в окне Properties вводится без парных кавычек.

    Если адрес диапазона указать без имени рабочего листа, то данные будут загружаться в список из соответствующего диапазона активного листа. Если имя рабочего листа содержит пробелы, то его следует заключить в одинарные кавычки: "'Данные для списка'!A1:A10".

    Пример 6
    Импорт данных в одностолбцовый список из диапазона «A1:A7» рабочего листа «Лист1»:

    ListBox с одним столбцом

    Пример 7
    Импорт данных в четырехстолбцовый список с заголовками из диапазона «A2:D4» рабочего листа «Лист1» (заголовки импортируются автоматически из диапазона «A1:D1»):

    ListBox с четырьмя столбцами

    Другая информация об элементе управления ListBox представлена в отдельной статье.

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

    5 комментариев для “VBA Excel. ListBox – заполнение списка данными”

    1. Александр

      А есть возможность заполнить список используя запрос через REST API?
      Данные получаем в json формате

      1. Человек

        Добавляем в проект модули https://github.com/VBA-tools/VBA-JSON и https://github.com/VBA-tools/VBA-Dictionary

    2. Здравствуйте! Подскажите, пожалуйста, есть ли способ заполнить ListBox больше, чем 10 столбцов? У меня 15 столбцов, которые считываются из таблицы, в которой количество строк меняется. Привожу свой код, который при открытии формы заполняет ListBox автоматически.

      1. Евгений

        Здравствуйте, Дарья!
        Заполняйте ListBox1 сразу из массива без цикла:

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

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