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]