Excel VBA Зависимый Combo Boxes
Ниже мы рассмотрим программу в Excel VBA, который создает UserForm, содержащий зависимые выпадающие списки. UserForm мы собираемся создать выглядит следующим образом:
Пользователь выбирает животные из выпадающего списка. В результате, пользователь может выбрать животное из второго выпадающего списка.
Пользователь выбирает Спорт из выпадающего списка. В результате, пользователь может выбрать вид спорта из второго выпадающего списка.
Для создания этого UserForm, выполните следующие действия.
-
Откройте редактор Visual Basic. Если проводник проекта не отображается, нажмите кнопку Просмотр, Project Explorer.
-
Нажмите кнопку Вставить, UserForm. Если панель инструментов не появляется автоматически, нажмите кнопку View, Toolbox. Экран должен быть установлен, как показано ниже.
-
Добавьте поля со списком (первый слева, второй справа) и командную кнопку. После того, как это было закончено, результат должен быть согласован с изображением UserForm, показанным ранее. Например, можно создать элемент управления Поле со списком, нажав на ComboBox из панели инструментов.
Далее, вы можете перетащить выпадающий на UserForm.
-
Вы можете изменить имена и подписи элементов управления. Имена используются в коде Excel VBA. Титры являются те, которые появляются на экране. Это хорошая практика, чтобы изменить имена элементов управления, но не надо здесь, потому что у нас есть только несколько элементов управления в этом примере. Чтобы изменить заголовок кнопки UserForm и команд, выберите Вид, Свойство окно и нажмите на каждый элементе управления.
-
Для того, чтобы показать UserForm, поместить командную кнопку на листе и добавьте следующие строки кода:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Сейчас мы собираемся создать Sub UserForm_Initialize. При использовании метода Show для UserForm, этот подпункт будет автоматически выполняться.
-
Откройте редактор Visual Basic.
-
В окне Project Explorer, щелкните правой кнопкой мыши на UserForm1, а затем нажмите кнопку Просмотр кода.
-
Выберите UserForm из списка левого выпадающего списка. Выберите Initialize справа в раскрывающемся списке.
-
Добавьте следующие строки кода:
Private Sub UserForm_Initialize() With ComboBox1 .AddItem "Animals" .AddItem "Sports" .AddItem "Food" End With End Sub
Объяснение: Эти строки кода заполнить первый выпадающий.
Теперь мы создали первую часть UserForm. Хотя это выглядит аккуратным уже, ничего не произойдет еще, когда мы выбираем элемент из первого выпадающего списка.
-
В окне проекта дважды щелкните на UserForm1.
-
Дважды щелкните на первом поле.
-
Добавьте следующие строки кода:
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.
-
Дважды щелкните на кнопке Import.
-
Добавьте следующую строку кода:
Private Sub CommandButton1_Click() Range("A1").Value = ComboBox2.Value End Sub
Результат: