Auswählen mehrerer Werte aus Listbox mit VBA in Microsoft Excel
In diesem Artikel erfahren Sie, wie Sie ein Listenfeld erstellen, in dem wir mehrere Namen auswählen und die erforderlichen Daten aus den Hauptdaten abrufen können.
Lassen Sie uns mit der einfachen Übung verstehen: – Wir haben Daten erfasst, in denen wir für jeden Mitarbeiter E-Mail-ID-Details haben.
Führen Sie die folgenden Schritte aus, um das Listenfeld zu erstellen, in dem Sie mehrere Optionen mithilfe des VBA-Codes auswählen können: –
Listenfeld einfügen
Um ein Listenfeld in eine Excel-Tabelle einzufügen, gehen Sie zur Registerkarte Entwickler> Klicken Sie auf Einfügen> und dann unter ActiveX Control
auf die Schaltfläche Listenfeld Klicken Sie auf der Registerkarte Entwickler auf Entwurfsmodus, um das Design zu aktivieren, und klicken Sie dann auf der Registerkarte Entwickler auf Eigenschaften. Das Dialogfeld Eigenschaften wird angezeigt.
Wählen Sie das Listenfeld aus und wechseln Sie zum Dialogfeld Eigenschaften. Klicken Sie auf die Registerkarte Kategorisiert. Wechseln Sie unter der Überschrift Verschiedenes zur Eigenschaft ListFillRange und weisen Sie den Bereich zu, der die Werte für das Listenfeld enthält.
Ändern Sie unter der Überschrift Verhalten die Eigenschaft Multiselect in 1-fmMultiSelectMulti
Fügen Sie nun zwei Befehlsschaltflächen in die Excel-Tabelle ein. Gehen Sie zur Registerkarte Entwickler> Klicken Sie auf Einfügen> und dann auf das Schaltflächensymbol unter Formularsteuerung
Klicken Sie mit der rechten Maustaste auf die Schaltfläche, wählen Sie die Eigenschaft Text bearbeiten und benennen Sie die beiden Schaltflächen in „Namen abwählen“ und „Senden“ um.
Drücken Sie die Taste Alt + F11, um den Visual Basic-Editor zu öffnen. Fügen Sie ein neues Modul hinzu und fügen Sie den folgenden Code in das Modul ein.
Codierung Der obige Code enthält zwei Prozeduren: GettingSelectedItems und UnselectedItems. Weisen Sie die Schaltfläche GettingSelectedItems to Submit und die Schaltfläche UnselectedItems to Unselect Names zu.
Deaktivieren Sie nach dem Zuweisen der Prozedur den Entwurfsmodus, indem Sie auf der Registerkarte Entwickler auf die Schaltfläche Entwurfsmodus klicken.
Logische Erklärung
In diesem Beispiel ist es unser Ziel, die E-Mail-ID des vom Benutzer ausgewählten Namens in der Spalte Listenfeld auf L abzurufen.
Der Benutzer kann im Listenfeld mehrere Namen auswählen. Nach Auswahl der Namen drückt der Benutzer auf die Schaltfläche „Senden“ und die E-Mail-ID, die dem ausgewählten Namen im Listenfeld entspricht, wird in der Spalte L der Excel-Tabelle angezeigt.
Wenn der Benutzer alle ausgewählten Namen im Listenfeld abwählen möchte, kann er auf die Schaltfläche „Namen abwählen“ klicken.
Um das oben genannte Ziel zu erreichen, haben wir eine Excel-Formel und ein Excel-Verfahren verwendet.
Prozedur GettingSelectedItems wurde geschrieben, um den ausgewählten Namen aus dem Listenfeld in den Bereich von K10 bis K23 zu bringen.
Um die E-Mail-ID für den ausgewählten Namen zu erhalten, haben wir die folgende Excel-Formel verwendet: – = IFERROR (VLOOKUP (K10, $ A $ 10: $ B $ 23,2,0), „“)
Fügen Sie die obige Formel in Zelle L10 ein und kopieren Sie diese Formel und fügen Sie sie im Bereich L10 bis L23 ein.
Diese Formel liefert die E-Mail-ID, indem der ausgewählte Name im Bereich A10 bis B23 nachgeschlagen wird.
Wir haben die Werte im Bereich von K10 bis K23 ausgeblendet, indem wir für Schriftart und Hintergrund der Zelle dieselbe Farbe verwendet haben.
Bitte folgen Sie unten für den Code
Option Explicit Sub GettingSelectedItems() 'Getting selected items in ListBox1 Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i, r As Integer 'deleting selected values Range("K10:K23").Select Selection.ClearContents 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 r = 0 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Using .selected for selecting only those value which is selected by user in listbox If .Selected(i) Then 'Assigning selected value of List Box to Column K on the sheet Cells(r + 10, 11).Value = .List(i) r = r + 1 End If Next i End With Range("L10").Select End Sub Sub UnselectedItems() 'Unselecting all the items in the list box Application.ScreenUpdating = False 'Declaring varialbes Dim ValueSelected As String, i As Integer 'Defining listbox1 of sheet TestDialog With Sheets("TestDialog").ListBox1 'Using For loop for looping through all the items in List Box For i = 0 To .ListCount - 1 'Unselecting all the items in the list .Selected(i) = False Next i End With 'Deleting data from range K10 to K23 Range("K10:K23").Select Selection.ClearContents Range("L10").Select End Sub
Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]