VBA Listbox - Ausgewähltes Element

In diesem Artikel wird gezeigt, wie Sie mit dem ausgewählten Element in einem Listenfeld in Excel VBA arbeiten.

Listenfelder werden hauptsächlich in VBA-Formularen verwendet, können aber auch in Ihrem Excel-Arbeitsblatt verwendet werden. Sie zeigen den Benutzern eine Liste von Optionen an, von denen der Benutzer eine oder mehrere auswählen kann.

Listenfeld in einem VBA-Formular erstellen

Um ein Listenfeld in einem VBA-Formular zu erstellen, müssen wir zuerst die UserForm erstellen.

Nachdem Sie Ihr Formular erstellt haben, wählen Sie das Listenfeld-Steuerelement in der Toolbox aus und ziehen Sie dann, um ein Listenfeld in Ihrem Formular zu erstellen.

Hinzufügen von Werten zum Listenfeld

Geben Sie im Initialize-Ereignis des Formulars den folgenden Code ein. Das Listenfeld nimmt Werte auf, die in einem Zellbereich in Ihrem Excel-Arbeitsblatt gespeichert sind.

123456 Private Sub UserForm_Initialize()Dim rng As RangeFür jeden rng im Bereich("A1:A50")Me.lstState.AddItem rng.ValueNächster rngEnd Sub

Wenn wir das Formular ausführen, wird das Listenfeld wie in der Abbildung unten gezeigt angezeigt:

Auswählen von Werten aus dem Listenfeld

Standardmäßig kann ein einzelner Wert in einem Listenfeld in einem Benutzerformular ausgewählt werden. Dies kann jedoch durch Ändern der Multi-Select-Eigenschaft des Listenfelds geändert werden.

Klicken Sie auf das Listenfeld, um es auszuwählen, und ändern Sie dann im Eigenschaftenfenster die Multi-Select-Eigenschaft von 0-frmMultiSelectSingle zu 1-frmMultiSelectMulti.

Wenn wir das Formular jetzt ausführen, können wir mehr als eine Option im Listenfeld auswählen.

Wenn wir die Option ändern, um zu sein 2-frmMultiSelectExtended, bedeutet dies, dass wir einen der Werte auswählen können und dann halten Sie die SHIFT-Taste gedrückt, Wählen Sie einen anderen Wert weiter unten in der Liste aus, und alle Elemente zwischen den beiden ausgewählten Werten werden ebenfalls ausgewählt.

VBA-Programmierung | Code Generator arbeitet für Sie!

Arbeiten mit den ausgewählten Werten in VBA

Abhängig von der Art der Option, die wir für die Multi-Select-Eigenschaft im Listenfeld verwendet haben, gibt es eine Reihe von Möglichkeiten, den oder die im Listenfeld ausgewählten Werte in VBA-Code zu verwenden.

Zuweisen des Wertes zu einer Variablen

Wir können die nutzen Nach dem Update Ereignis des Listenfelds, um den ausgewählten Wert einer Variablen zuzuweisen.

Lassen Sie uns zunächst eine Variable auf Modulebene oben im Formularmodul erstellen.

Unter den Worten, Option explizit, erstellen Sie die folgende Zeichenfolgenvariable.

1 Dim strState als String.

Nachdem wir diese Variable erstellt haben, können wir auf das Listenfeld doppelklicken, um zum Code hinter dem Formular zu gelangen, oder wir können auf die Code-Schaltfläche im VBE-Editor klicken.

Das Klickereignis des Listenfelds wird automatisch erstellt. Wähle aus Nach dem Update Ereignisformular die Liste der verfügbaren Verfahren.

Geben Sie im After_Update-Ereignis den folgenden Code ein:

123 Private Sub lstState_AfterUpdate()strState = Me.lstStateEnd Sub

HINWEIS: Sie können das Click-Ereignis löschen, da es nicht erforderlich ist.

Wenn wir nun das Formular ausführen und auf das Listenfeld klicken, wird der ausgewählte Wert in der Variablen gespeichert. Um dies zu testen, können wir einen BREAK-Punkt in den Code einfügen.

Wenn wir nun das Formular ausführen und auf das Listenfeld klicken, wechselt der Code in den DEBUG-Modus und stoppt an unserem Unterbrechungspunkt. Wenn wir dann F8 auf der Tastatur drücken, um im Code einen Schritt weiter zu gehen, wird die Variable mit dem ausgewählten Element in der Liste gefüllt.

Wir können diesen Wert anzeigen, indem wir die Maus auf die Variable bewegen.

ODER

Wir können den Wert im Direktfenster anzeigen.

Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!

Verwenden einer Befehlsschaltfläche, um den Wert an Excel zurückzugeben

Zuerst erstellen wir eine Befehlsschaltfläche im Formular, um eine OK-Schaltfläche zu haben, um den oder die im Listenfeld ausgewählten Werte an Excel zurückzugeben.

Wählen Sie das Befehlsschaltflächen-Steuerelement aus, klicken Sie dann in Ihrem Formular, und ziehen Sie es, um die Schaltfläche zu erstellen.

Ändern Sie im Eigenschaftenfenster den Namen der Schaltfläche in cmdOK, und ändern Sie die Beschriftung und den Beschleuniger der Schaltfläche.

Der Zweck des Beschleunigers besteht darin, dass der Benutzer die Tastatur verwendet, um die Schaltfläche zu aktivieren, in diesem Fall Alt+O würde den Button aktivieren.

Damit die Befehlsschaltfläche funktioniert, müssen wir dahinter Code hinzufügen, damit der Code ausgeführt wird, wenn auf die Schaltfläche geklickt wird. Dies wird als Click-Ereignis der Schaltfläche bezeichnet.

Um zum Click-Ereignis zu gelangen, doppelklicken Sie in der Entwurfsansicht des Formulars auf die Schaltfläche. Das Click-Ereignis wird automatisch erstellt, da dies das Ereignis ist, das am häufigsten für Befehlsschaltflächen verwendet wird.

Geben Sie den folgenden Code in das Click-Ereignis der Befehlsschaltfläche ein.

123 Privates Abo cmdOK_Click()Range("E1") = strStateEnd Sub

Der Code greift die Variable auf, die wir im After_Update-Ereignis der ListBox deklariert haben, und gibt den Wert an den Bereich in Excel zurück.

Alternativ können wir den Wert direkt aus der Listbox abrufen, ohne eine Variable zu verwenden.

123 Privates Abo cmdOK_Click()Range("E1") = me.lstStateEnd Sub

Wenn wir das Formular ausführen, wird der ausgewählte Wert an Excel zurückgegeben, wenn wir auf die Schaltfläche OK klicken.

Auswählen mehrerer Werte

Wenn wir die Multi-Select-Eigenschaft des Listenfelds auf 1 oder 2 gesetzt haben, wodurch wir mehrere Werte in der Liste auswählen können, ist der Code zum Auswählen dieser Werte etwas anders.

Die Nach dem Update Ereignis wird bei Auswahl der Werte in der Listbox nicht mehr ausgelöst - wir können dieses Ereignis daher nicht verwenden.

Wir können das Click-Ereignis der Befehlsschaltfläche weiterhin verwenden, müssen jedoch die im Listenfeld ausgewählten Werte durchlaufen, um sie an Excel zurückzugeben.

Geben Sie in dem Click-Ereignis der Befehlsschaltfläche den folgenden Code ein.

12345678910 Privates Abo cmdOK_Click()Dim x As IntegerBereich("E1").WählenFür x = 0 To Me.lstState.ListCount - 1Wenn Me.lstState.Selected(x) = True ThenActiveCell = Me.lstState.List(x)ActiveCell.Offset(1, 0).WählenEnde WennNächstes xEnd Sub

Wenn wir nun das Formular ausführen, werden nur die ausgewählten Werte an das Excel-Blatt zurückgegeben.

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

wave wave wave wave wave