Excel-VBA-Dependent Comboboxen
Im Folgenden werden wir ein Programm in Excel VBA, die auf eine Userform erstellt, die abhängig Kombinationsfelder enthält. Die Userform werden wir aussehen wie folgt erstellen:
Der Benutzer wählt Tiere aus einer Dropdown-Liste. Als Ergebnis kann der Benutzer ein Tier von einer zweiten Dropdown-Liste auswählen.
Der Benutzer wählt Sport aus einer Dropdown-Liste. Als Ergebnis kann der Benutzer einen Sport von einer zweiten Dropdown-Liste auswählen.
Um diese Userform zu erstellen, führen Sie die folgenden Schritte.
-
Öffnen Sie den Visual Basic-Editor. Wenn das Projekt-Explorer nicht sichtbar ist, klicken Sie auf Ansicht, Projekt-Explorer.
-
Klicken Sie auf Einfügen, Benutzerformular. Wenn die Toolbox nicht automatisch angezeigt wird, klicken Sie auf Ansicht, Toolbox. Ihr Bildschirm sollte wie unten aufgebaut werden.
-
die Kombinationsfelder hinzufügen (zuerst links an, die zweite auf der rechten Seite) Taste und Befehl. Sobald dies abgeschlossen ist, sollte das Ergebnis mit dem Bild von der Userform gezeigt früher konsistent sein. Erstellen Sie zum Beispiel ein Kombinationsfeld-Steuerelement von der Toolbox auf ComboBox klicken.
Als Nächstes können Sie ein Kombinationsfeld auf dem Benutzerformular ziehen.
-
Sie können die Namen ändern und die Beschriftungen der Kontrollen. Die Namen werden in dem Excel-VBA-Code verwendet. Bildunterschriften sind diejenigen, die auf dem Bildschirm angezeigt. Es empfiehlt sich, die Namen der Kontrollen zu ändern, aber es ist hier nicht notwendig, da wir nur wenige Kontrollen in diesem Beispiel haben. Um die Beschriftung der Userform und Befehlsschaltfläche zu ändern, klicken Sie auf Ansicht, Eigenschaften-Fenster und klicken Sie auf jede Kontrolle.
-
die Userform zu zeigen, eine Befehlsschaltfläche auf dem Arbeitsblatt platzieren und die folgende Codezeile hinzu:
Private Sub CommandButton1_Click() UserForm1.Show End Sub
Wir werden jetzt die Sub UserForm_Initialize zu erstellen. Wenn Sie die Show-Methode für die Userform verwenden, wird diese Unter automatisch ausgeführt werden.
-
Öffnen Sie den Visual Basic-Editor.
-
Geben Sie in dem Projekt-Explorer direkt auf UserForm1 und klicken Sie dann auf Code anzeigen klicken.
Wählen Sie Userform aus der linken Dropdown-Liste 8.. Wählen Sie Initialisieren von der rechten Dropdown-Liste.
-
die folgenden Codezeilen hinzu:
Private Sub UserForm_Initialize() With ComboBox1 .AddItem "Animals" .AddItem "Sports" .AddItem "Food" End With End Sub
Erläuterung: Diese Codezeilen füllen Sie das erste Kombinationsfeld.
Wir haben nun den ersten Teil der Userform erstellt. Obwohl es schon ordentlich aussieht, wird noch nichts geschehen, wenn wir ein Element aus dem ersten Kombinationsfeld auswählen.
-
In dem Projekt-Explorer, klicken Sie doppelt auf UserForm1.
-
Klicken Sie doppelt auf das erste Kombinationsfeld.
-
Fügen Sie die folgenden Codezeilen:
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
Erläuterung: Excel VBA verwendet den Wert der Variablen Index jede nachfolgende Case-Anweisung zu testen, um zu sehen, mit denen Elemente der zweite Kombinationsfeld gefüllt werden soll. Gehen Sie durch unsere Select Case
Programmieren mehr über die Select Case-Struktur zu lernen.
-
Klicken Sie doppelt auf die Schaltfläche Importieren.
-
Fügen Sie den folgenden Code-Zeile:
Private Sub CommandButton1_Click() Range("A1").Value = ComboBox2.Value End Sub
Ergebnis: