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

Пользователь выбирает животные из выпадающего списка. В результате, пользователь может выбрать животное из второго выпадающего списка.

Dependent Combo Boxes in Excel VBA

Пользователь выбирает Спорт из выпадающего списка. В результате, пользователь может выбрать вид спорта из второго выпадающего списка.

Dependent Combo Boxes in Excel VBA

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

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

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

Userform Screen Setup in Excel VBA

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

Далее, вы можете перетащить выпадающий на UserForm.

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

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сейчас мы собираемся создать Sub UserForm_Initialize. При использовании метода Show для UserForm, этот подпункт будет автоматически выполняться.

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

  2. В окне Project Explorer, щелкните правой кнопкой мыши на UserForm1, а затем нажмите кнопку Просмотр кода.

  3. Выберите UserForm из списка левого выпадающего списка. Выберите Initialize справа в раскрывающемся списке.

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

Private Sub UserForm_Initialize()

With ComboBox1

.AddItem "Animals"

.AddItem "Sports"

.AddItem "Food"

End With

End Sub

Объяснение: Эти строки кода заполнить первый выпадающий.

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

  1. В окне проекта дважды щелкните на UserForm1.

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

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

Private Sub ComboBox1_Change()

Dim index As Integer

index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index

Case Is = 0

With ComboBox2

.AddItem "Dog"

.AddItem "Cat"

.AddItem "Horse"

End With

Case Is = 1

With ComboBox2

.AddItem "Tennis"

.AddItem "Swimming"

.AddItem "Basketball"

End With

Case Is = 2

With ComboBox2

.AddItem "Pancakes"

.AddItem "Pizza"

.AddItem "Chinese"

End With

End Select

End Sub

Объяснение: Excel VBA использует значение индекса переменной для проверки каждого последующего заявления случая, чтобы увидеть, с которой элементы второй выпадающий должны быть заполнены. Пройдите наш ссылке: / VBA-примеры-выбрать-случай [Select Case]

программы более узнать о структуре Select Case.

  1. Дважды щелкните на кнопке Import.

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

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Результат:

Dependent Combo Boxes in Excel VBA