/ / Wybór wielu pól listy w Excel VBA

Wiele wyborów w polu listy w programie Excel VBA

The Właściwość MultiSelect w Excel VBA pozwala użytkownikowi wybrać wiele elementów w polu listy. Forma użytkownika, którą utworzymy, wygląda następująco:

Wiele wyborów w polu listy w programie 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 listy (najpierw po lewej, drugi po prawej), przyciski poleceń, pola wyboru (najpierw po lewej, drugi po prawej), ramki i przyciski opcji (najpierw u góry, drugi pod pierwszym , i tak dalej). Po zakończeniu, wynik powinien być zgodny z obrazem formularza użytkownika pokazanym wcześniej. Na przykład utwórz kontrolę pola listy, klikając ListBox z Przybornika. Następnie możesz przeciągnąć pole listy na Userform. Kiedy dojdziesz do ramki "Wybierz typ", pamiętaj, aby narysować tę ramkę najpierw, zanim umieścisz w niej trzy przyciski opcji.

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 Userform, przyciski poleceń, pola wyboru, ramki i przyciski opcji, kliknij przycisk View, Properties Window 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. Najpierw zadeklaruj zmienną i typu Integer. Deklaruj zmienną w sekcji Deklaracje ogólne (u góry kodu). W ten sposób wystarczy zadeklarować zmienną tylko raz i można ich użyć w wielu subsach.

Dim i As Integer

9. Wybierz Userform z lewej listy rozwijanej. Wybierz Initialize z prawej listy rozwijanej.

10. Dodaj następujące wiersze kodu:

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Sales"
    .AddItem "Production"
    .AddItem "Logistics"
    .AddItem "Human Resources"
End With

OptionButton3.Value = True

End Sub

Objaśnienie: pierwsze pole listy zostanie wypełnione, a trzeci przycisk opcji zostanie ustawiony jako domyślny.

Stworzyliśmy teraz pierwszą część Userform. Mimo że już teraz wygląda całkiem zgrabnie, nic nie stanie się po kliknięciu przycisków poleceń lub innych elementów sterujących.

11. W Project Explorer dwukrotnie kliknij UserForm1.

12. Kliknij dwukrotnie przycisk Dodaj.

13. Dodaj następujące linie kodu:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i

End Sub

Objaśnienie: Program Excel VBA wykonuje pętlę przez pierwsze pole listy (numer indeksu listy wynoszący zero (0) dla pierwszego elementu na liście) i, jeśli jest zaznaczony, dodaje element do drugiego pola listy.

14. Kliknij dwukrotnie przycisk Usuń.

15. Dodaj następujące linie kodu:

Private Sub CommandButton2_Click()

Dim counter As Integer
counter = 0

For i = 0 To ListBox2.ListCount - 1
    If ListBox2.Selected(i - counter) Then
        ListBox2.RemoveItem (i - counter)
        counter = counter + 1
    End If
Next i

CheckBox2.Value = False

End Sub

Objaśnienie: Program Excel VBA wykonuje pętlę w drugim polu listy i, jeśli zaznaczono, usuwa element. Zmienna licznika rejestruje liczbę usuniętych elementów.

16. Kliknij dwukrotnie pierwszy przycisk opcji.

17. Dodaj następujące linie kodu:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0
ListBox2.MultiSelect = 0

End Sub

18. Kliknij dwukrotnie na przycisk drugiej opcji.

19. Dodaj następujące linie kodu:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1
ListBox2.MultiSelect = 1

End Sub

20. Kliknij dwukrotnie trzeci przycisk opcji.

21. Dodaj następujące linie kodu:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2
ListBox2.MultiSelect = 2

End Sub

Wyjaśnienie: ustawienie "Wybierz typ" można wybrać, klikając przyciski opcji. Przedstawione wcześniej zdjęcie formularza użytkownika zawiera opis każdego ustawienia. Zamiast konfigurować to ustawienie w środowisku wykonawczym, możesz również skonfigurować to ustawienie w czasie projektowania. Aby to osiągnąć, kliknij prawym przyciskiem myszy kontrolkę w polu listy, a następnie kliknij Właściwości. Ustaw właściwość MultiSelect na 0 - fmMultiSelectSingle, 1 - fmMultiSelectMulti lub 2 - fmMultiSelectExtented.

22. Kliknij dwukrotnie pierwsze pole wyboru.

23. Dodaj następujące linie kodu:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End If

If CheckBox1.Value = False Then
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = False
    Next i
End If

End Sub

Objaśnienie: po zaznaczeniu pierwszego pola wyboru można zaznaczyć / odznaczyć wszystkie elementy pierwszego pola listy.

24. Kliknij dwukrotnie drugie pole wyboru, aby dodać te same linie kodu. Wymień tylko CheckBox1 na CheckBox2 i ListBox1 na ListBox2.

Przeczytaj również: