С помощью всего лишь несколько строк кода, мы можем легко перебрать управления на Excel VBA UserForm. UserForm мы собираемся создать выглядит следующим образом:

Loop through Controls in Excel VBA

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

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

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

Userform Screen Setup in Excel VBA

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

  2. Вы можете изменить имена и подписи элементов управления. Имена используются в коде Excel VBA. Титры являются те, которые появляются на экране. Это хорошая практика, чтобы изменить имена элементов управления, но не надо здесь, потому что у нас есть только несколько элементов управления в этом примере. Чтобы изменить заголовок пользовательской формы, меток, флажков и кнопок команд, выберите Вид, Свойство окно и нажмите на каждый элементе управления.

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

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

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

  3. Двойной щелчок по кнопке Clear.

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

Private Sub CommandButton1_Click()

Dim contr As control

For Each contr In UserForm1.Controls

If TypeName(contr) = "CheckBox" Then

contr.Value = False

End If

Next

End Sub

Объяснение: Excel VBA перебирает все элементы управления на UserForm. Функция TypeName используется для фильтрации элементов управления флажков. Если элемент управления флажками, Excel VBA неустановленный флажок. Контр случайным образом выбирается здесь, вы можете использовать любое имя. Не забывайте ссылаться на это имя в остальной части кода.

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

Loop through Controls Result