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

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

За да създадете този Userform, изпълнете следните стъпки.
1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.
2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

3. Добавете полетата за комбиниране (първо вляво, второ в дясно) и команден бутон. След като това бъде завършено, резултатът трябва да съответства на картината на потребителския формат, показан по-рано. Например, създайте контролен панел, като кликнете върху ComboBox от Toolbox. След това можете да плъзнете поле за съпоставка в Userform.
4. Можете да промените имената и надписите на контролите. Имената се използват в кода Excel VBA. Надписите са тези, които се показват на екрана ви. Добра практика е да промените имената на контролите, но това не е необходимо тук, защото имаме само няколко контрола в този пример. За да промените надписа на Userform и командния бутон, щракнете върху View, Properties Window и щракнете върху всеки контролен панел.
5. За да покажете Userform, поставете командния бутон на работния лист и добавете следния ред:
UserForm1.Show
End Sub
Сега ще създадем Sub UserForm_Initialize. Когато използвате метода "Показване" за Userform, този под ще се изпълни автоматично.
6. Отворете редактора на Visual Basic.
7. В Project Explorer кликнете с десния бутон на мишката върху UserForm1 и след това върху View Code.
8. Изберете Userform от левия падащ списък. Изберете "Инициализиране" от десния падащ списък.
9. Добавете следните кодови редове:
With ComboBox1
.AddItem "Animals"
.AddItem "Sports"
.AddItem "Food"
End With
End Sub
Обяснение: Тези кодови линии запълват първата селективна кутия.
Вече създадохме първата част от Userform. Въпреки че вече изглежда чист, нищо няма да се случи, когато изберете елемент от първата селекция.
10. В Project Explorer кликнете два пъти върху UserForm1.
11. Кликнете два пъти върху първата селекция.
12. Добавете следните кодови редове:
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. Добавете следния ред на кода:
Range("A1").Value = ComboBox2.Value
End Sub
Резултат:
