Excel VBA-abhängige Kombinationsfelder - Einfache Excel-Makros

Inhaltsverzeichnis

Im Folgenden sehen wir uns ein Programm in an Excel VBA wodurch ein Benutzerformular erstellt wird, das enthält abhängige Kombinationsfelder. Die Userform, die wir erstellen werden, sieht wie folgt aus:

Der Benutzer wählt Tiere aus einer Dropdown-Liste aus. Als Ergebnis kann der Benutzer ein Tier aus einer zweiten Dropdown-Liste auswählen.

Der Benutzer wählt Sport aus einer Dropdown-Liste aus. Als Ergebnis kann der Benutzer eine Sportart aus einer zweiten Dropdown-Liste auswählen.

Führen Sie die folgenden Schritte aus, um dieses Benutzerformular zu erstellen.

1. Öffnen Sie den Visual Basic-Editor. Wenn der Projekt-Explorer nicht sichtbar ist, klicken Sie auf Ansicht, Projekt-Explorer.

2. Klicken Sie auf Einfügen, Benutzerformular. Wenn die Toolbox nicht automatisch angezeigt wird, klicken Sie auf Ansicht, Toolbox. Ihr Bildschirm sollte wie folgt eingerichtet sein.

3. Fügen Sie die Kombinationsfelder (das erste links, das zweite rechts) und die Befehlsschaltfläche hinzu. Sobald dies abgeschlossen ist, sollte das Ergebnis mit dem zuvor gezeigten Bild des Benutzerformulars übereinstimmen. Erstellen Sie beispielsweise ein Kombinationsfeld-Steuerelement, indem Sie in der Toolbox auf ComboBox klicken. Als Nächstes können Sie ein Kombinationsfeld auf das Benutzerformular ziehen.

4. Sie können die Namen und Beschriftungen der Steuerelemente ändern. Namen werden im Excel VBA-Code verwendet. Untertitel sind die, die auf Ihrem Bildschirm erscheinen. Es hat sich bewährt, die Namen der Steuerelemente zu ändern, aber dies ist hier nicht erforderlich, da wir in diesem Beispiel nur wenige Steuerelemente haben. Um die Beschriftung des Benutzerformulars und der Befehlsschaltfläche zu ändern, klicken Sie auf Ansicht, Eigenschaftenfenster, und klicken Sie auf jedes Steuerelement.

5. Platzieren Sie in Ihrem Arbeitsblatt eine Befehlsschaltfläche, und fügen Sie die folgende Codezeile hinzu, um das Benutzerformular anzuzeigen:

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Wir werden jetzt die Sub UserForm_Initialize erstellen. Wenn Sie die Show-Methode für das Userform verwenden, wird dieses Sub automatisch ausgeführt.

6. Öffnen Sie den Visual Basic-Editor.

7. Klicken Sie in dem Projekt-Explorer mit der rechten Maustaste auf UserForm1 und klicken Sie dann auf Code anzeigen.

8. Wählen Sie Benutzerformular aus der linken Dropdown-Liste. Wählen Sie Initialisieren aus der rechten Dropdown-Liste.

9. Fügen Sie die folgenden Codezeilen hinzu:

Private Sub UserForm_Initialize()
Mit ComboBox1
.AddItem "Tiere"
.AddItem "Sport"
.AddItem "Essen"
Ende mit
End Sub

Erläuterung: Diese Codezeilen füllen das erste Kombinationsfeld.

Wir haben nun den ersten Teil des Userform erstellt. Obwohl es schon ordentlich aussieht, passiert noch nichts, wenn wir einen Gegenstand aus dem ersten Kombinationsfeld auswählen.

10. Doppelklicken Sie im Projekt-Explorer auf UserForm1.

11. Doppelklicken Sie auf das erste Kombinationsfeld.

12. Fügen Sie die folgenden Codezeilen hinzu:

Private Sub ComboBox1_Change()
Dim-Index As Integer
index = ComboBox1.ListIndex
ComboBox2.Clear
Fallindex auswählen
Fall ist = 0
Mit ComboBox2
.AddItem "Hund"
.AddItem "Katze"
.AddItem "Pferd"
Ende mit
Fall ist = 1
Mit ComboBox2
.AddItem "Tennis"
.AddItem "Schwimmen"
.AddItem "Basketball"
Ende mit
Fall ist = 2
Mit ComboBox2
.AddItem "Pfannkuchen"
.AddItem "Pizza"
.AddItem "Chinesisch"
Ende mit
Auswahl beenden
End Sub

Erläuterung: Excel VBA verwendet den Wert des Variablenindex, um jede nachfolgende Case-Anweisung zu testen, um zu sehen, mit welchen Elementen das zweite Kombinationsfeld gefüllt werden soll. Gehen Sie durch unser Select Case-Programm, um mehr über die Select Case-Struktur zu erfahren.

13. Doppelklicken Sie auf die Schaltfläche Importieren.

14. Fügen Sie die folgende Codezeile hinzu:

Private Sub CommandButton1_Click()
Range("A1").Value = ComboBox2.Value
End Sub

Ergebnis:

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave