... sich das Makro - plus der kleinen Anpassung - von hier schnappen:
'für einspaltige Listenfelder
Private Function GetSelectedListItems() As Variant
Dim vntSelectedItems As Variant
Dim i As Long
Dim j As Long
If ListBox1.ListCount = 0 Then
GetSelectedListItems = Split(vbNullString) ' = Dim array(0 To -1)
Exit Function
End If
ReDim vntSelectedItems(1 To ListBox1.ListCount)
For j = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(j) Then
i = i + 1
vntSelectedItems(i) = ListBox1.List(j)
End If
Next
If i > 0 Then
ReDim Preserve vntSelectedItems(1 To i)
Else
vntSelectedItems = Split(vbNullString) ' = Dim array(0 To -1)
End If
GetSelectedListItems = vntSelectedItems
Erase vntSelectedItems
End Function
Anmerkung:
Dim vntSelectedItems As Variant
ReDim vntSelectedItems(...)
Wer hier nicht versteht warum das erste Dim wichtig ist, der soll das mal auskommentieren und dann den Fall durchspielen, wenn in der ListeBox zwar Einträge existieren, davon jedoch kein einziger ausgewählt wurde (Zeile 25 *hust*).
Dann erstellt er sich in der UserForm eine Property
Public Property Get SelectedListItems() as Variant
SelectedListItems = GetSelectedListItems()
End Public
Dann schließt er seine UserForm - er muss sie stattdessen ausblenden, um anschl. Werte aus der UF abzufragen zu können - per Me.Hide.
In dem Modul, von wo er zuvor die UF aufgerufen hat, ruft er dann über die zuvor genannte Property die Liste ab.
BäM! Fertsch.
Aber stattdessen meldet er sich nicht zurück, fragt nicht zurück, zerreißt alles in der Luft und beschäftigt hier ganze Völker.
|