Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Программное создание элементов управления

    Пример программного создания элементов управления формы в VBA Excel как дополнение к статьям о динамическом создании форм и методе Controls.Add.

    Введение

    В дополнение к статьям о программном создании формы в VBA Excel и Метод Controls.Add пользовательской формы, рассмотрим динамическое добавление на пользовательскую форму элементов управления и взаимодействие с ними на примере отображения расстояний от Солнца до планет Солнечной системы. В данном обзоре будет разобрано программное создание двух меток (Label) и выпадающего списка (ComboBox), который будет реагировать на действия пользователя благодаря событию ComboBox_Change().

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

    Для реализации проекта по программному созданию элементов управления формы потребуется всего два шага:

    1. Создание пользовательской формы
      Для начала, в редакторе Visual Basic for Applications (VBA) необходимо создать новую пользовательскую форму. Это можно сделать, кликнув правой кнопкой мыши в окне проекта и выбрав Insert > UserForm.
    2. Размещение кода в модуле формы
      Весь приведенный ниже код следует разместить в модуле только что созданной пользовательской формы. Двойной клик по форме в окне проекта откроет ее модуль.


    Код VBA Excel для вставки в модуль формы:

    Запустить код можно непосредственно из окна формы или модуля формы, нажав пункт меню Run > Run Sub/UserForm или на его треугольную кнопку.

    Разбор кода

    Объявление переменных
    В начале кода объявляются переменные lb1 и lb2 для двух меток (Label), а также переменная cb1 для выпадающего списка (ComboBox). Ключевое слово WithEvents перед cb1 позволяет этому элементу управления реагировать на события, такие, как выбор элемента из списка.

    Инициализация формы
    Событие UserForm_Initialize() происходит перед отображением формы на экране. В этом блоке кода задаются начальные размеры и заголовок формы. Затем, с помощью метода .Controls.Add(), на форму программно добавляются две метки и один выпадающий список. Для каждого созданного элемента управления в блоках With... End With настраиваются его свойства: размеры, положение, размер шрифта и начальные значения.

    Обработка события Change
    Процедура cb1_Change() автоматически вызывается каждый раз, когда пользователь выбирает новый элемент в выпадающем списке cb1. Внутри этой процедуры:

    • Два массива, pl() и km(), содержат названия планет в родительном падеже и соответствующие им расстояния до Солнца.
    • Условие If cb1.ListIndex > -1 проверяет, был ли сделан выбор в списке.
    • Если выбор сделан, то свойству Caption первой метки (lb1) присваивается текст с названием выбранной планеты, а второй метке (lb2) — расстояние до Солнца из массива km.

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


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