Here is a simple 1D Quicksort
[vba]
Sub QuickSort(ByRef SortArray, Optional ByVal L As Long, Optional ByVal U As Long)
Dim i, j, X, Y
If L = 0 Then L = LBound(SortArray)
If U = 0 Then U = UBound(SortArray)
i = L
j = U
X = SortArray((L + U) \ 2)
While (i <= j)
While (SortArray(i) < X And i < U)
i = i + 1
Wend
While (X < SortArray(j) And j > L)
j = j - 1
Wend
If (i <= j) Then
Y = SortArray(i)
SortArray(i) = SortArray(j)
SortArray(j) = Y
i = i + 1
j = j - 1
End If
Wend
If (L < j) Then Call QuickSort(SortArray, L, j)
If (i < U) Then Call QuickSort(SortArray, i, U)
End Sub
[/vba]
Just pass it the array like so
[vba]
QuickSort myArray
ListBox1.List = myArray
[/vba]