Sub ShellSort()
'Dave Braden's code
Dim i As Long, j As Long, inc As Long, list As Variant
Dim var As Variant, LowIndex As Integer, HiIndex As Long
Dim myArray$
'list = [{"Nate","Colo","Orange","Ivan"}]
list = [{2,1,4,3}]
LowIndex = LBound(list): HiIndex = UBound(list)
inc = 1
Do While inc <= HiIndex - LowIndex: inc = 3 * inc + 1: Loop
Do
inc = inc \ 3
For i = LowIndex + inc To HiIndex
var = list(i)
j = i
Do While list(j - inc) > var
list(j) = list(j - inc)
j = j - inc
If j <= inc Then Exit Do
Loop
list(j) = var
Next
Loop While inc > 1
For a = 1 To 3
myArray = myArray & list(a) & ", "
Next a
myArray = myArray & list(4)
MsgBox myArray
End Sub