Ich habe eine Userform mit mehreren Comboboxen, deren Liste mit Werten aus einem Excel-Blatt gefüllt werden. Diese sollen nun alphabetisch sortiert werden. Ich habe auch schon einige Prozeduren im Forum dazu gefunden, habe es aber aufgrund meiner mangelnden VBA-Kenntnisse nicht geschafft, diese auf meinen Fall anzuwenden.
Grundsätzlich sollen die Datenquellen im Excel-Blatt selbst nicht umsortiert werden, damit keine Bezüge kaputt gehen. Am besten wäre es, wenn einfach die Daten, die sich bereits in der Combobox befinden, in ein Array eingelesen und dann umsortiert würden. Habe folgendes im Forum gefunden:
Sub Combo_sortiert()
If ComboBox1.ListCount = 0 Then Exit Sub
Dim ArrSort() As Variant, i As Long
ReDim ArrSort(ComboBox1.ListCount - 1)
''Daten erstmal in Array einlesen
For i = 0 To ComboBox1.ListCount - 1
ArrSort(i) = ComboBox1.List(i)
Next
''Combobox löschen
Me.ComboBox1.Clear
''Sortierung aufrufen
Call Sortierung(ArrSort) 'wenn aufsteigend
''Combobox mit sortierten Daten füllen
ComboBox1.List() = ArrSort
''Ersten Eintrag auswählen
ComboBox1.ListIndex = 0
End Sub
Sub Sortierung(ByRef arr() As Variant)
Dim UB As Long, i As Long, tmp As Variant
UB = UBound(arr)
Do
For i = 0 To UB - 1
If arr(i) > arr(i + 1) Then
tmp = arr(i)
arr(i) = arr(i + 1)
arr(i + 1) = tmp
End If
Next
UB = UB - 1
Loop While UB > 1
End
Sub
Diese funktioniert bei mir aber leider nicht, an der Stelle ComboBox1.Clear gibt es eine _
Fehlermeldung und wenn ich diesen Teil rausnehme, gibt er mir an der Stelle: ComboBox1.List() = ArrSort die Fehlermeldung "Permission denied"
Ich wäre wirklich überaus dankbar wenn mir jemand diesbezüglich aus der Patsche helfen könnte!
Vielen Dank