Try this.
It works in my application.
---------------------------------------------------
Sub ProcSort(arr As Variant, numEls As Long, descending As Boolean)
Dim index As Long, index2 As Long, firstItem As Long
Dim distance As Long, value As Variant, Nval As Integer
If VarType(arr) < vbArray Then Exit Sub
firstItem = LBound(arr)
Do
distance = distance * 3 + 1
Loop Until distance > numEls
Do
distance = distance \ 3
For index = distance + firstItem To numEls + firstItem - 1
value = arr(index, 0)
Nval = arr(index, 1)
index2 = index
Do While (arr(index2 - distance, 0) > value) Xor descending
arr(index2, 0) = arr(index2 - distance, 0)
arr(index2, 1) = arr(index2 - distance, 1)
index2 = index2 - distance
If index2 - distance < firstItem Then Exit Do
Loop
arr(index2, 0) = value
arr(index2, 1) = Nval
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.