Sortieralg. funktioniert nicht
11.11.2022 07:49:06
Shouchen
ich stehe gerade vor einem Problem, was sich mir nicht ganz erklärt:
Ich habe ein Array als Varriant, welches zum Beispiel die Zahlenfolge:
4 4 1 1
enthält.
Dieses wollte ich gerne umsortieren lassen zu:
1 1 4 4
Also alle Zahlen, in eine aufsteigende Reihenfolge setzen. Ich weiß, ich könnte die Zahlen auf ein Tabellenblatt ziehen, Sie dort sortieren und wieder einlesen. Doch wollte ich es gerne rein im Code lösen. Problem ist, der Code fügt für die erste Stelle immer ein Leerzeichen ein und drängt die letzte Stelle raus, daher in dem Beispiel würde daraus:
" " 1 1 4
werden.
Function SortArray(ByRef strArray As Variant) As Variant()
'sortieren von String Array
'eindimensionale Array
'rekursiver Aufruf
Dim tmpArray() As Variant
Dim i As Long
tmpArray = strArray
For i = LBound(tmpArray) To (UBound(tmpArray) - 1)
If LCase(strArray(i)) > LCase(strArray(i + 1)) Then
tmpArray(i) = strArray(i + 1)
tmpArray(i + 1) = strArray(i)
strArray = tmpArray
'rekursiver Aufruf
tmpArray = SortArray(strArray)
End If
Next i
SortArray = tmpArray
End Function
Ja, ich habe den Code auch nur billig ergoogled, weil mir das Verständnis bisher fehlt.Ich habe versucht ihn nachzuvollziehen und zu "reparieren", doch war ich bisher zu dumm dafür.
Ich wäre dankbar wenn mir jemand sagen könnte, warum das nicht funktioniert und wie es funktionieren könnte.
Mit freundlichen Grüßen
Shouchen