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

VBA Excel. Метод Controls.Add пользовательской формы

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

    Метод Controls.Add пользовательской формы

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

    Синтаксис метода Controls.Add

    Описание компонентов метода

    • Var — объектная переменная, которой будет присвоен созданный элемент управления. Она может быть объявлена как Control, Object или Variant.
    • Form — имя пользовательской формы, на которую добавляется элемент управления.
    • ProgID — программный идентификатор создаваемого элемента управления.
    • Name — необязательный параметр, задающий имя добавляемого элемента управления.
    • Visible — необязательный параметр, определяющий видимость создаваемого элемента управления. Может принимать значение True или False.

    ProgID и Name, используемые в выражениях метода Controls.Add заключаются в прямые кавычки. Смотрите в примерах.

    Идентификаторы элементов управления формы

    Элемент управления Программный идентификатор
    CheckBox Forms.CheckBox.1
    ComboBox Forms.ComboBox.1
    CommandButton Forms.CommandButton.1
    Frame Forms.Frame.1
    Image Forms.Image.1
    Label Forms.Label.1
    ListBox Forms.ListBox.1
    OptionButton Forms.OptionButton.1
    ScrollBar Forms.ScrollBar.1
    SpinButton Forms.SpinButton.1
    TextBox Forms.TextBox.1
    ToggleButton Forms.ToggleButton.1

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

    Для реализации примеров необходимо открыть рабочую книгу Excel с поддержкой макросов (.xls или .xlsm) и в редакторе VBA создать пользовательскую форму UserForm1.

    Пример 1
    Программное создание элемента управления TextBox с присвоением его свойству «Text» значения «Привет!». Так как это свойство TextBox является свойством по умолчанию, вместо «myCont.Text» используем в коде для присвоения значения только имя переменной «myCont».

    Так как мы присвоили вновь созданному элементу управления TextBox имя «myTextBox1», теперь обращаться к нему можно и по этому имени, например:
    UserForm1.Controls("myTextBox1") = "Привет!"
    Этой строкой можно заменить строку:
    myCont = "Привет!"

    Как видим, обращаться к добавленному элементу управления удобнее через переменную, чем по присвоенному имени.

    Пример 2
    Создание с помощью кода VBA Excel группы элементов управления ComboBox, присвоение соответствующим параметрам значений размеров и отступов.


    Как привязать стандартные события к динамически созданным элементам управления читайте в статье Привязка события к элементу управления.


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

    6 комментариев для “VBA Excel. Метод Controls.Add пользовательской формы”

    1. В эксель 2007 выдает ошибку компил. User defined-type not defined

      1. Евгений

        Не исключаю такую возможность, так как примеры тестировались в Excel 2016.

    2. Станислав

      Как созданный методом Controls.Add SpinButton использовать? Пробовал через переменную к нему обращаться, пробовал по присваиваемому имени, не происходит изменения числа.

      Как отследить событие изменения созданного спина?

    3. При закрывании формы с Вашим кодом выдает ошибку №91.

      1. Евгений

        Добрый день, Андрей!
        Только что проверил, у меня форма закрывается без ошибки.

    Обсуждение закрыто.