/ / Excel VBA зависими комбо кутии

Компонентни кутии, зависими от Excel VBA

По - долу ще разгледаме програма в Excel VBA който създава Userform, който съдържа зависими кутии за комбиниране, Потребителската форма, която ще създадем, изглежда така:

Потребителят избира Животни от падащ списък. В резултат на това потребителят може да избере животно от втори падащ списък.

Зависими комбинационни кутии в Excel VBA

Потребителят избира Спорт от падащ списък. В резултат на това потребителят може да избере спорт от втори падащ списък.

Зависими комбинационни кутии в Excel VBA

За да създадете този Userform, изпълнете следните стъпки.

1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.

2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

Настройка на потребителския екран в Excel VBA

3. Добавете полетата за комбиниране (първо вляво, второ в дясно) и команден бутон. След като това бъде завършено, резултатът трябва да съответства на картината на потребителския формат, показан по-рано. Например, създайте контролен панел, като кликнете върху ComboBox от Toolbox. След това можете да плъзнете поле за съпоставка в Userform.

4. Можете да промените имената и надписите на контролите. Имената се използват в кода Excel VBA. Надписите са тези, които се показват на екрана ви. Добра практика е да промените имената на контролите, но това не е необходимо тук, защото имаме само няколко контрола в този пример. За да промените надписа на Userform и командния бутон, щракнете върху View, Properties Window и щракнете върху всеки контролен панел.

5. За да покажете Userform, поставете командния бутон на работния лист и добавете следния ред:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сега ще създадем Sub UserForm_Initialize. Когато използвате метода "Показване" за Userform, този под ще се изпълни автоматично.

6. Отворете редактора на Visual Basic.

7. В Project Explorer кликнете с десния бутон на мишката върху UserForm1 и след това върху View Code.

8. Изберете Userform от левия падащ списък. Изберете "Инициализиране" от десния падащ списък.

9. Добавете следните кодови редове:

Private Sub UserForm_Initialize()

With ComboBox1
    .AddItem "Animals"
    .AddItem "Sports"
    .AddItem "Food"
End With

End Sub

Обяснение: Тези кодови линии запълват първата селективна кутия.

Вече създадохме първата част от Userform. Въпреки че вече изглежда чист, нищо няма да се случи, когато изберете елемент от първата селекция.

10. В Project Explorer кликнете два пъти върху UserForm1.

11. Кликнете два пъти върху първата селекция.

12. Добавете следните кодови редове:

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 използва стойността на променливия индекс, за да тества всеки следващ случай, за да види с кои елементи трябва да бъде попълнена втората кутия със секции. Отидете в нашата програма Select Case за да научите повече за структурата Select Case.

13. Кликнете два пъти върху бутона "Импорт".

14. Добавете следния ред на кода:

Private Sub CommandButton1_Click()

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

End Sub

Резултат:

Зависими комбинационни кутии в Excel VBA

Също така се чете: