Some folks told that a two-dimensional array can solve almost all the problems, but let me disagree with that. That's why I made this Deca dimensional array sort function. The array must be symmetrical, meaning that it must contain elements corresponding to all the existing elements in the other dimensions.
I didn't put any error handler, because depending on usage purposes, it can take different shapes.
I tried for several days to find a way to avoid such multiple statements by using an on-the-fly variable generator to replace the index of array in the loop. I didn't succeeded, so the question is: did someone know a way to replace the seqArr(i) = arr(s(0)
, i
, s(2)
with: seqArr(i)
= something based on the s variable (which already is generating the same result)?
The improvement I need is regarding the length of the code. Actually the code is limited to 10 dimensions because of its length, with a solution regarding repetitive statement in the loop it can be extended to an unlimited number of dimensions.
I also don't want to use Microsoft scripting runtime library on this.
Function SortArray(ByRef arr As Variant, ByVal selPoint As Variant, ByRef selDim As Integer, Optional ByRef ascend As Boolean = True) As Variant
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Deca Dimensional Ascending and Descending Array Sort Function
'Inputs:
'1) arr = one to 10 dimensional symmetrical array
'2) selPoint = selected point index as string e.g. "arr(1,15,4)" or just "(1,15,4)"
'3) selDim = selected dimension, integer from 1 to 10
'4) ascend = Optional ascending or descending direction (default = ascending)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim seq As Variant, seqArr As Variant, s As Variant
Dim i As Integer, j As Integer, arrDim As Integer
On Error Resume Next
Do
arrDim = arrDim + 1
seq = UBound(arr, arrDim)
Loop Until Err.Number <> 0
arrDim = arrDim - 1
On Error GoTo 0
ReDim seq(UBound(arr, selDim))
For i = LBound(seq) To UBound(seq)
seq(i) = i
Next i
'following array is already generating necessary array index but
'I didn't find a way to use it to avoid such multiple statements
s = Split(Split(selPoint, "(")(1), ")")(0)
s = Split(s, ",")
selPoint = ""
For i = 1 To arrDim
If i = selDim Then selPoint = selPoint & "i," Else selPoint = selPoint & "s(" & i - 1 & "),"
Next i
ReDim seqArr(0)
For i = LBound(seq) To UBound(seq)
ReDim Preserve seqArr(i)
If arrDim = 1 Then
seqArr(i) = arr(s(0))
ElseIf arrDim = 2 And selDim = 1 Then
seqArr(i) = arr(i, s(1))
ElseIf arrDim = 2 And selDim = 2 Then
seqArr(i) = arr(s(0), i)
ElseIf arrDim = 3 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2))
ElseIf arrDim = 3 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2))
ElseIf arrDim = 3 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i)
ElseIf arrDim = 4 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3))
ElseIf arrDim = 4 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3))
ElseIf arrDim = 4 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3))
ElseIf arrDim = 4 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i)
ElseIf arrDim = 5 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4))
ElseIf arrDim = 5 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4))
ElseIf arrDim = 5 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4))
ElseIf arrDim = 5 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4))
ElseIf arrDim = 5 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i)
ElseIf arrDim = 6 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4), s(5))
ElseIf arrDim = 6 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4), s(5))
ElseIf arrDim = 6 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4), s(5))
ElseIf arrDim = 6 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4), s(5))
ElseIf arrDim = 6 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i, s(5))
ElseIf arrDim = 6 And selDim = 6 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), i)
ElseIf arrDim = 7 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4), s(5), s(6))
ElseIf arrDim = 7 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4), s(5), s(6))
ElseIf arrDim = 7 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4), s(5), s(6))
ElseIf arrDim = 7 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4), s(5), s(6))
ElseIf arrDim = 7 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i, s(5), s(6))
ElseIf arrDim = 7 And selDim = 6 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), i, s(6))
ElseIf arrDim = 7 And selDim = 7 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), i)
ElseIf arrDim = 8 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4), s(5), s(6), s(7))
ElseIf arrDim = 8 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4), s(5), s(6), s(7))
ElseIf arrDim = 8 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4), s(5), s(6), s(7))
ElseIf arrDim = 8 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4), s(5), s(6), s(7))
ElseIf arrDim = 8 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i, s(5), s(6), s(7))
ElseIf arrDim = 8 And selDim = 6 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), i, s(6), s(7))
ElseIf arrDim = 8 And selDim = 7 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), i, s(7))
ElseIf arrDim = 8 And selDim = 8 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), i)
ElseIf arrDim = 9 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4), s(5), s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4), s(5), s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4), s(5), s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4), s(5), s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i, s(5), s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 6 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), i, s(6), s(7), s(8))
ElseIf arrDim = 9 And selDim = 7 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), i, s(7), s(8))
ElseIf arrDim = 9 And selDim = 8 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), i, s(8))
ElseIf arrDim = 9 And selDim = 9 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), s(7), i)
ElseIf arrDim = 10 And selDim = 1 Then
seqArr(i) = arr(i, s(1), s(2), s(3), s(4), s(5), s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 2 Then
seqArr(i) = arr(s(0), i, s(2), s(3), s(4), s(5), s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 3 Then
seqArr(i) = arr(s(0), s(1), i, s(3), s(4), s(5), s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 4 Then
seqArr(i) = arr(s(0), s(1), s(2), i, s(4), s(5), s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 5 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), i, s(5), s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 6 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), i, s(6), s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 7 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), i, s(7), s(8), s(9))
ElseIf arrDim = 10 And selDim = 8 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), i, s(8), s(9))
ElseIf arrDim = 10 And selDim = 9 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), s(7), i, s(9))
ElseIf arrDim = 10 And selDim = 10 Then
seqArr(i) = arr(s(0), s(1), s(2), s(3), s(4), s(5), s(6), s(7), s(8), i)
Else
End If
Next i
seq = SortSeq(seqArr, seq, LBound(seq), UBound(seq), ascend)
SortArray = ParseArray(arr, seq, selDim)
End Function
Private Function SortSeq(ByRef iArr As Variant, ByRef sArr As Variant, ByRef iDnRow As Long, ByRef iUpRow As Long, Optional ByRef ascend As Boolean = True) As Variant
Dim oArr As Variant, vArr As Variant
Dim vDnRow As Long, vUpRow As Long
vDnRow = iDnRow
vUpRow = iUpRow
oArr = iArr((iDnRow + iUpRow) \ 2)
While (vDnRow <= vUpRow)
If ascend = True Then
While (iArr(vDnRow) < oArr And vDnRow < iUpRow)
vDnRow = vDnRow + 1
Wend
While (oArr < iArr(vUpRow) And vUpRow > iDnRow)
vUpRow = vUpRow - 1
Wend
Else
While (iArr(vDnRow) > oArr And vDnRow < iUpRow)
vDnRow = vDnRow + 1
Wend
While (oArr > iArr(vUpRow) And vUpRow > iDnRow)
vUpRow = vUpRow - 1
Wend
End If
If (vDnRow <= vUpRow) Then
vArr = iArr(vDnRow)
iArr(vDnRow) = iArr(vUpRow)
iArr(vUpRow) = vArr
vArr = sArr(vDnRow)
sArr(vDnRow) = sArr(vUpRow)
sArr(vUpRow) = vArr
vDnRow = vDnRow + 1
vUpRow = vUpRow - 1
End If
Wend
If (iDnRow < vUpRow) Then SortSeq iArr, sArr, iDnRow, vUpRow, ascend
If (vDnRow < iUpRow) Then SortSeq iArr, sArr, vDnRow, iUpRow, ascend
SortSeq = sArr
End Function
Private Function ParseArray(ByRef baseArray As Variant, ByRef seq As Variant, ByRef d As Integer) As Variant
Dim selDim As Integer, baseDim As Integer
Dim d1 As Integer, d2 As Integer, d3 As Integer, d4 As Integer, d5 As Integer
Dim d6 As Integer, d7 As Integer, d8 As Integer, d9 As Integer, d10 As Integer
Dim tmpArray As Variant
On Error Resume Next
Do
baseDim = baseDim + 1
tmpArray = UBound(baseArray, baseDim)
Loop Until Err.Number <> 0
baseDim = baseDim - 1
On Error GoTo 0
tmpArray = baseArray
selDim = 1
For d1 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d2 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d3 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d4 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d5 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d6 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d7 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d8 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d9 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If baseDim > selDim Then
selDim = selDim + 1
For d10 = LBound(baseArray, selDim) To UBound(baseArray, selDim)
If d = 1 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(seq(d1), d2, d3, d4, d5, d6, d7, d8, d9, d10)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, seq(d2), d3, d4, d5, d6, d7, d8, d9, d10)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, seq(d3), d4, d5, d6, d7, d8, d9, d10)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, seq(d4), d5, d6, d7, d8, d9, d10)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, seq(d5), d6, d7, d8, d9, d10)
ElseIf d = 6 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, d5, seq(d6), d7, d8, d9, d10)
ElseIf d = 7 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, d5, d6, seq(d7), d8, d9, d10)
ElseIf d = 8 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, d5, d6, d7, seq(d8), d9, d10)
ElseIf d = 9 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, d5, d6, d7, d8, seq(d9), d10)
ElseIf d = 10 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10) = tmpArray(d1, d2, d3, d4, d5, d6, d7, d8, d9, seq(d10))
Else
End If
Next d10
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(seq(d1), d2, d3, d4, d5, d6, d7, d8, d9)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, seq(d2), d3, d4, d5, d6, d7, d8, d9)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, seq(d3), d4, d5, d6, d7, d8, d9)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, seq(d4), d5, d6, d7, d8, d9)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, d4, seq(d5), d6, d7, d8, d9)
ElseIf d = 6 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, d4, d5, seq(d6), d7, d8, d9)
ElseIf d = 7 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, d4, d5, d6, seq(d7), d8, d9)
ElseIf d = 8 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, d4, d5, d6, d7, seq(d8), d9)
ElseIf d = 9 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8, d9) = tmpArray(d1, d2, d3, d4, d5, d6, d7, d8, seq(d9))
Else
End If
End If
Next d9
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(seq(d1), d2, d3, d4, d5, d6, d7, d8)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, seq(d2), d3, d4, d5, d6, d7, d8)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, seq(d3), d4, d5, d6, d7, d8)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, d3, seq(d4), d5, d6, d7, d8)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, d3, d4, seq(d5), d6, d7, d8)
ElseIf d = 6 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, d3, d4, d5, seq(d6), d7, d8)
ElseIf d = 7 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, d3, d4, d5, d6, seq(d7), d8)
ElseIf d = 8 Then
baseArray(d1, d2, d3, d4, d5, d6, d7, d8) = tmpArray(d1, d2, d3, d4, d5, d6, d7, seq(d8))
Else
End If
End If
Next d8
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(seq(d1), d2, d3, d4, d5, d6, d7)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, seq(d2), d3, d4, d5, d6, d7)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, d2, seq(d3), d4, d5, d6, d7)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, d2, d3, seq(d4), d5, d6, d7)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, d2, d3, d4, seq(d5), d6, d7)
ElseIf d = 6 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, d2, d3, d4, d5, seq(d6), d7)
ElseIf d = 7 Then
baseArray(d1, d2, d3, d4, d5, d6, d7) = tmpArray(d1, d2, d3, d4, d5, d6, seq(d7))
Else
End If
End If
Next d7
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(seq(d1), d2, d3, d4, d5, d6)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(d1, seq(d2), d3, d4, d5, d6)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(d1, d2, seq(d3), d4, d5, d6)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(d1, d2, d3, seq(d4), d5, d6)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(d1, d2, d3, d4, seq(d5), d6)
ElseIf d = 6 Then
baseArray(d1, d2, d3, d4, d5, d6) = tmpArray(d1, d2, d3, d4, d5, seq(d6))
Else
End If
End If
Next d6
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4, d5) = tmpArray(seq(d1), d2, d3, d4, d5)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4, d5) = tmpArray(d1, seq(d2), d3, d4, d5)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4, d5) = tmpArray(d1, d2, seq(d3), d4, d5)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4, d5) = tmpArray(d1, d2, d3, seq(d4), d5)
ElseIf d = 5 Then
baseArray(d1, d2, d3, d4, d5) = tmpArray(d1, d2, d3, d4, seq(d5))
Else
End If
End If
Next d5
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3, d4) = tmpArray(seq(d1), d2, d3, d4)
ElseIf d = 2 Then
baseArray(d1, d2, d3, d4) = tmpArray(d1, seq(d2), d3, d4)
ElseIf d = 3 Then
baseArray(d1, d2, d3, d4) = tmpArray(d1, d2, seq(d3), d4)
ElseIf d = 4 Then
baseArray(d1, d2, d3, d4) = tmpArray(d1, d2, d3, seq(d4))
Else
End If
End If
Next d4
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2, d3) = tmpArray(seq(d1), d2, d3)
ElseIf d = 2 Then
baseArray(d1, d2, d3) = tmpArray(d1, seq(d2), d3)
ElseIf d = 3 Then
baseArray(d1, d2, d3) = tmpArray(d1, d2, seq(d3))
Else
End If
End If
Next d3
selDim = selDim - 1
Else
If d = 1 Then
baseArray(d1, d2) = tmpArray(seq(d1), d2)
ElseIf d = 2 Then
baseArray(d1, d2) = tmpArray(d1, seq(d2))
Else
End If
End If
Next d2
selDim = selDim - 1
Else
baseArray(d1) = tmpArray(seq(d1))
End If
Next d1
ParseArray = baseArray
End Function
A simple test sub:
Sub testSortArray()
Dim arr As Variant
ReDim arr(1, 1, 5)
arr(0, 0, 0) = 0
arr(0, 0, 1) = 1
arr(0, 0, 2) = 2
arr(0, 0, 3) = 3
arr(0, 0, 4) = 4
arr(0, 0, 5) = 5
arr(0, 1, 0) = 10
arr(0, 1, 1) = 11
arr(0, 1, 2) = 12
arr(0, 1, 3) = 13
arr(0, 1, 4) = 14
arr(0, 1, 5) = 15
arr(1, 0, 0) = 100
arr(1, 0, 1) = 101
arr(1, 0, 2) = 102
arr(1, 0, 3) = 103
arr(1, 0, 4) = 104
arr(1, 0, 5) = 105
arr(1, 1, 0) = 110
arr(1, 1, 1) = 111
arr(1, 1, 2) = 112
arr(1, 1, 3) = 113
arr(1, 1, 4) = 114
arr(1, 1, 5) = 115
'arr = SortArray(arr, "arr(0,1,0)", 1, False)
'arr = SortArray(arr, "arr(0,1,0)", 2, False)
arr = SortArray(arr, "arr(0,1,0)", 3, False)
End Sub