Перейти к содержимому

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

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

  1. Метод Controls.Add пользовательской формы
  2. Идентификаторы элементов управления формы
  3. Программное добавление элементов управления

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

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

Set Var = Form.Controls.Add(ProgID, [Name], [Visible])

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

  • 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».

Sub Primer_1()
Dim myCont As Control
Set myCont = UserForm1.Controls.Add("Forms.TextBox.1", "myTextBox1")
myCont = "Привет!"
UserForm1.Show
End Sub

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

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

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

Sub Primer_2()
Dim myCont(1 To 5) As Control, i As Byte
  With UserForm1
    For i = 1 To 5
      Set myCont(i) = .Controls.Add("Forms.ComboBox.1")
        With myCont(i)
'Заполняем все ComboBox одинаковыми списками
          .List = Array("Привет1", "Привет2", _
          "Привет3", "Привет4", "Привет5")
'Добавляем размеры и отступы
          .Width = 200
          .Height = 20
          .Left = 20
          .Top = i * 10 + (i - 1) * 20
        End With
    Next
    .Caption = "Пять полей со списком"
    .Height = 190
    .Width = 250
    .Show
  End With
End Sub
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

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

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].