'http://www.vbarchiv.net/archiv/tipp_details.php?pid=372 Public Sub arrayQuickSort(ByRef ioArray As Variant, _ Optional ByVal iStart As Variant, _ Optional ByVal iEnd As Variant) ' Wird die Bereichsgrenze nicht angegeben, ' so wird das gesamte Array sortiert If IsMissing(iStart) Then iStart = LBound(ioArray) If IsMissing(iEnd) Then iEnd = UBound(ioArray) Dim i As Long Dim j As Long Dim h As Variant Dim x As Variant i = iStart: j = iEnd x = ioArray((iStart + iEnd) / 2) ' Array aufteilen Do While (ioArray(i) < x): i = i + 1: Wend While (ioArray(j) > x): j = j - 1: Wend If (i <= j) Then ' Wertepaare miteinander tauschen h = ioArray(i) ioArray(i) = ioArray(j) ioArray(j) = h i = i + 1: j = j - 1 End If Loop Until (i > j) ' Rekursion (Funktion ruft sich selbst auf) If (iStart < j) Then ArrayQuickSort ioArray, iStart, j If (i < iEnd) Then ArrayQuickSort ioArray, i, iEnd End Sub