Passe das bei dir mal so an:
'UserForm: Auswahl
Option Explicit
Sub CommandButton1_Click()
Me.Hide
End Sub
Public Property Get SelectedListItems() As Variant
SelectedListItems = GetSelectedListItems()
End Property
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
in ThisDocument solltest du dann so an die Auswahl kommen
AuswahlPerson = Auswahl.SelectedListItems
Bonus:
Schau dir noch mal den Inhalt in der UserForm 'Auswahl' an.
Dort gibt es
- eine private Methode GetSelectedListItems()
- eine public Get Property SelectedListItems
Die Methode GetSelectedListItems() wird innerhalb der Property aufgerufen und der Rückgabewert wird so nach außen gereicht. Die Methode GetSelectedListItems() selbst, ist nach außen hin nicht sichtbar (sie ist privat).
Warum ist die Privat; warum wurde da so gemacht?
Weil man praktisch auch noch folgendes tun kann, wenn man mehrere Listenfelder auf der UserForm hat.
man ändert
Private Function GetSelectedListItems() As Variant
zu
Private Function GetSelectedListItems(ListBox As MSForms.ListBox) As Variant
und innerhalb der Methode GetSelectedListItems ändert man jetzt alles was ListBox1 heißt zu ListBox. Wir verallgemeinern also.
Was bringt das? => Man kann jetzt mit dieser einen Methode die Auswahl einer jeden beliebigen ListBox auf der UserForm abfragen.
z.B: (ich werd hier mal bei deutschen Bezeichnern bleiben)
Public Property Get KategorienAusgewählt() As Variant
KategorienAusgewählt = GetSelectedListItems(lboKategorien) 'lboKategorien ist eine ListBox
End Property
Public Property Get PreisgruppenAusgewählt() As Variant
PreisgruppenAusgewählt = GetSelectedListItems(lboPreisgruppen) 'lboPreisgruppen ist eine ListBox
End Property
'usw. für beliebig viele möglich
|