При создании UserForms в Excel VBA, вы можете использовать коллекцию Controls легко перебрать элементы управления и установить свойство каждого элемента управления к значению конкретного.

UserForm мы собираемся создать выглядит следующим образом:

Controls Collection in Excel VBA

Для создания этого UserForm, выполните следующие действия:

  1. Откройте редактор Visual Basic. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer.

  2. Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.

Userform Screen Setup in Excel VBA

  1. Добавьте метку, текстовые поля (первый в верхней части, второй ниже первого, и так далее) и кнопки управления. После того, как это было закончено, результат должен быть согласован с изображением UserForm, показанным ранее. Например, создать элемент управления для ввода текста, щелкнув на TextBox из панели инструментов. Далее, вы можете перетащить текстовое поле на UserForm.

  2. Чтобы изменить заголовок кнопки UserForm, этикетки и команд, выберите View, Properties Window и нажмите на каждый элементе управления.

  3. Для того, чтобы показать UserForm, поместить командную кнопку на листе и добавьте следующие строки кода:

Private Sub CommandButton1_Click()

UserForm1.Show vbModeless

End Sub

Объяснение: путем добавления vbModeless, вы можете использовать UserForm и работать в рабочем листе, в то же время.

Теперь мы создали первую часть UserForm. Хотя это выглядит аккуратным уже ничего не случится еще когда мы нажмем кнопку команды на UserForm.

  1. Откройте редактор Visual Basic.

  2. В окне Project Explorer дважды щелкните на UserForm1.

  3. Дважды щелкните по командной кнопке.

  4. Добавьте следующие строки кода:

Private Sub CommandButton1_Click()

Dim i As Integer

For i = 1 To 10

Controls("TextBox" & i).Value = Cells(i + 1, 1).Value

Next i

End Sub

Объяснение: С помощью всего лишь несколько строк кода, мы можем заполнить текстовые поля с номерами телефонов из листа. Мы использовали и оператор для конкатенации (объединение) элементов. Эти строки кода работают, потому что мы не изменили имена элементов управления текстового поля (TextBox1, TextBox2, TextBox3 и т.д.). Для того, чтобы изменить имена элементов управления, выберите Вид, Свойства окна и нажмите на каждый элемент управления.

Результат при нажатии на кнопку управления на листе:

Controls Collection Result