Einträge aus Listbox auslesen

In diesem Beispiel zeigen wir Ihnen, wie sich Einträge aus einer ActiveX-Listbox, welche sich auf einem Tabellenblatt befindet, auslesen lassen. Dabei soll es auch möglich sein, dass mehrere selektierte Einträge (Multiselect) entsprechend ausgelesen werden können. 

Damit in einer ActiveX Listbox mehrere Einträge ausgewählt werden können, muss zunächst die Eigenschaft der Multiselect der Listbox auf frmMultiSelectMulti oder frmMultiSelcetExtended gestellt werden.

Zum Auslesen der gewählten Listbox-Einträge kann folgender VBA-Code verwendet werden.

Sub Multi_Listbox_auslesen()
'** Auslesen aller in einer Listbox selektierten Einträge (Multiselect)
'** Dimensionierung der Variablen
Dim i As Integer
Dim lngCnt As Long
'** Startzeile festelegen
lngCnt = 4
'** Ausgabebereich löschen
ActiveSheet.Range("H4:H16").ClearContents
With Sheets(1).ListBox1
 '** Beenden, wenn nichts ausgewählt wurde
 If .ListIndex = -1 Then Exit Sub
 
 '** Listbox durchlaufen
 For i = 0 To .ListCount - 1
 
 '** Gewählte Einträge auslesen
 If .Selected(i) Then
 txt = .List(i)
 
 '** Eintragen der gewählten Einträge auf Tabellenblatt
 ActiveSheet.Cells(lngCnt, 8).Value = txt
 
 '** Zeilenzähler erhöhen
 lngCnt = lngCnt + 1
 End If
 Next
End With
End Sub

Die gewählten Einträge werden in diesem Beispiel ab Zelle H4 in den Ausgabebereich geschrieben, siehe Abbildung. In diesem Beispiel wurden in der Listbox die Einträge B, D und F ausgewählt. Dementsprechend werden nach einem Klick auf die Schaltfläche Auswahl auslesen im Ausgabebereich ab Zelle H4 diese gewählten Einträge eingetragen.

Die Inhalte, welche in der Listbox angezeigt werden sollen, befinden sich im Eingabebereich B4:B16 und werden über die Eigenschaft ListFillRange übergeben.

Unter dem folgenden Link können Sie sich die Beispieldatei herunterladen und die Funktion entsprechend selbst nachvollzliehen.