/ / Zależne pola kombi w programie Excel VBA

Pola zależne Excel VBA zależne

Poniżej przyjrzymy się programowi w Excel VBA który tworzy formularz użytkownika, który zawiera zależne pola kombi. Forma użytkownika, którą utworzymy, wygląda następująco:

Użytkownik wybiera zwierzęta z rozwijanej listy. W rezultacie użytkownik może wybrać zwierzę z drugiej listy rozwijanej.

Dependent Combo Boxes w Excel VBA

Użytkownik wybiera Sports z listy rozwijanej. W rezultacie użytkownik może wybrać sport z drugiej listy rozwijanej.

Dependent Combo Boxes w Excel VBA

Aby utworzyć tę Userform, wykonaj następujące kroki.

1. Otwórz Edytor Visual Basic. Jeśli Eksplorator projektu nie jest widoczny, kliknij opcję Widok, Eksplorator projektu.

2. Kliknij Wstaw, Formularz użytkownika. Jeśli Zestaw narzędzi nie pojawi się automatycznie, kliknij opcję Widok, Przybornik. Twój ekran powinien być ustawiony jak poniżej.

Konfiguracja ekranu Userform w programie Excel VBA

3. Dodaj pola kombi (najpierw po lewej, drugi po prawej) i przycisk polecenia. Po zakończeniu, wynik powinien być zgodny z obrazem formularza użytkownika pokazanym wcześniej. Na przykład utwórz kontrolkę pola kombi, klikając ComboBox z Przybornika. Następnie możesz przeciągnąć pole kombi na Userform.

4. Możesz zmienić nazwy i podpisy kontrolek. Nazwy są używane w kodzie Excel VBA. Napisy są wyświetlane na ekranie. Dobrą praktyką jest zmiana nazw kontrolek, ale nie jest to konieczne, ponieważ w tym przykładzie mamy tylko kilka elementów sterujących. Aby zmienić podpis przycisku Userform i polecenia, kliknij przycisk View, Properties Window i kliknij poszczególne kontrolki.

5. Aby wyświetlić Formularz użytkownika, umieść przycisk polecenia w arkuszu i dodaj następującą linię kodu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Teraz utworzymy Sub UserForm_Initialize. Gdy użyjesz metody Show dla Userform, to subwoło zostanie automatycznie wykonane.

6. Otwórz Edytor Visual Basic.

7. W eksploratorze projektów kliknij prawym przyciskiem myszy UserForm1, a następnie kliknij opcję Wyświetl kod.

8. Wybierz opcję Userform z lewej listy rozwijanej. Wybierz Initialize z prawej listy rozwijanej.

9. Dodaj następujące linie kodu:

Private Sub UserForm_Initialize()

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

End Sub

Objaśnienie: Te linie kodu wypełniają pierwsze pole kombi.

Stworzyliśmy teraz pierwszą część Userform. Mimo, że już wygląda ładnie, nic nie stanie się, gdy wybierzemy element z pierwszego pola kombi.

10. W Project Explorer dwukrotnie kliknij UserForm1.

11. Kliknij dwukrotnie pierwsze pole kombi.

12. Dodaj następujące linie kodu:

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

Wyjaśnienie: Excel VBA używa wartości indeksu zmiennej, aby przetestować każdą kolejną instrukcję Case, aby zobaczyć, z którymi elementami należy wypełnić drugie pole kombi. Przejdź do naszego programu Select Case, aby dowiedzieć się więcej o strukturze Select Case.

13. Kliknij dwukrotnie przycisk Importuj.

14. Dodaj następującą linię kodu:

Private Sub CommandButton1_Click()

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

End Sub

Wynik:

Dependent Combo Boxes w Excel VBA

Przeczytaj również: