Найти в Дзене
VBA Excel с нуля

VBA Excel № 171.2 Работа с многоколоночными ЭУ ListBox

Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Во второй части статьи (начало в статье № 171.1) мы продолжим изучение работы с многоколоночными элементами управления ListBox в Excel и разберем, как заполнить ListBox данными из нескольких столбцов без использования диапазона ячеек на листе. Для этого используется двумерный массив, который позволяет гибко управлять данными и обеспечивает возможность их динамического изменения прямо в коде.

Использование двумерного массива для заполнения ListBox

Когда требуется отобразить данные в нескольких столбцах, но использование диапазона ячеек неудобно, можно использовать двумерный массив. Такой массив может содержать несколько строк и столбцов, и после его заполнения он может быть напрямую присвоен свойству List элемента ListBox.

Пример использования двумерного массива

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука

📌 Скачать файл пример, можно в конце статьи.

Вызов формы с ListBox

Для начала создадим процедуру, которая будет вызывать форму с нашим ListBox. Эта процедура аналогична той, что была в первой части статьи № 171.1.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Основной код для работы с ListBox

Теперь перейдем к коду, который выполняется при инициализации формы. В этом коде мы создаем и заполняем двумерный массив Data, а затем передаем его в ListBox.

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Некоторые подробности работы кода:

1. Инициализация массива:

Вначале создается двумерный массив Data, который имеет размер 12x2. Этот массив будет содержать информацию о каждом месяце года — название месяца и количество дней в нём.

2. Заполнение массива:

Затем выполняется цикл, который заполняет массив данными. В первом столбце массива (Data(i, 1)) сохраняется название месяца, а во втором (Data(i, 2)) — количество дней в этом месяце.

3. Настройка ListBox:

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

Me.ListBox1.ColumnCount = 2  ' Устанавливаем количество столбцов

Me.ListBox1.List = Data  ' Присваиваем массив ListBox

Ограничения метода

Есть одна заковырка! Если данные в ListBox загружены из массива VBA, то создать заголовки столбцов с использованием свойства ColumnHeads невозможно. Это ограничение VBA, с которым видимо придется смириться (или что-то придумать).

СКАЧАТЬ ФАЙЛ ПРИМЕР

Наука
7 млн интересуются