/ / Excel VBA Multicolumn Combo Box

Excel VBA Multicolumn Combo Box

Poniżej przyjrzymy się programowi w Excel VBA który tworzy formularz użytkownika, który zawiera pole kombi w wielu kolumnach.

Forma użytkownika, którą utworzymy, wygląda następująco:

Multicolumn Combo Box 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 etykietę, pole kombi i przyciski poleceń. 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 przycisków Userform, etykiety i poleceń, kliknij opcję Widok, okno Właściwości i kliknij każdy z elementów sterujących.

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()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

Wyjaśnienie: Pierwsza linia kodu ustawia liczbę kolumn pola kombi na 2. Zamiast ustawiać liczbę kolumn w środowisku wykonawczym, możesz także skonfigurować to ustawienie w czasie projektowania. Aby to osiągnąć, kliknij prawym przyciskiem myszy kontrolkę pola kombi, kliknij Właściwości i ustaw właściwość ColumnCount na 2. Następnie deklarujemy i inicjalizujemy tablicę dwuwymiarową. Ostatnia linia kodu przypisuje tablicę do pola kombi.

Stworzyliśmy teraz pierwszą część Userform. Mimo, że wygląda już zgrabnie, nic się nie stanie, gdy klikniemy przyciski poleceń w Userform.

10. W Project Explorer dwukrotnie kliknij UserForm1.

11. Kliknij dwukrotnie przycisk OK.

12. Dodaj następujące linie kodu:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next
MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

Uwaga: te linie kodu zamykają formularz użytkownika Excel VBA i wyświetlają wybrany element i gatunek. Instrukcja "On Error Resume Next" ignoruje błąd, gdy użytkownik wypełnia swój własny film (w tym przypadku nie ma dostępnego gatunku).

13. Kliknij dwukrotnie przycisk Anuluj.

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

Private Sub CommandButton2_Click()

Unload Me

End Sub

Wynik po wybraniu Prędkość i kliknięciu przycisku OK.

Wielokolumnowy wynik Combo Box

Wielokolumnowy wynik Combo Box

Przeczytaj również: