Here is a VBA QuickSort routine I picked up somewhere years ago. It has worked
well for me.
Sub QuickSort(SortMe() As String, lowbound As Long, hibound As Long)
'Recursive QuickSort routine for VBA. Sorts an array of strings into ascending
order.
'SortMe() is the array of strings to be sorted. lowbound is the index of the
first
'element in the array (usually 0 or 1). hibound is the index of the last
element in
'the array.
Dim low As Long, high As Long, midval As String, Temp As String
low& = lowbound&
high& = hibound&
midval$ = SortMe((low + high) / 2)
While (low <= high)
While (SortMe(low) < midval And low < hibound)
low = low + 1
Wend
While (midval < SortMe(high) And high > lowbound)
high = high - 1
Wend
If (low <= high) Then
Temp = SortMe(low)
SortMe(low) = SortMe(high)
SortMe(high) = Temp
low = low + 1
high = high - 1
End If
Wend
If (lowbound < high) Then
Call QuickSort(SortMe(), lowbound, high)
End If
If (low < hibound) Then
Call QuickSort(SortMe(), low, hibound)
End If
End Sub