I received this error for the first time in a million years of writing recursive code.
It seems that VBA doesn't like a ReDim when the array being redimensioned is used literally as a parameter by the calling routine:

Fails:
<pre>Public Function OrderArray(strBr() As String, strAr() As String, strCurrent As String)
...
Call OrderArray(strBr, strAr, strAr(LBound(strAr, 1), UBound(strAr, 2)))
ReDim Preserve strAr(UBound(strAr, 1), UBound(strAr, 2) + 1)</pre>


Succeeds:
<pre>Public Function OrderArray(strBr() As String, strAr() As String, strCurrent As String)
...
Dim strElement As String
strElement = strAr(LBound(strAr, 1), UBound(strAr, 2))
Call OrderArray(strBr, strAr, strElement)
ReDim Preserve strAr(UBound(strAr, 1), UBound(strAr, 2) + 1)</pre>


The code has to worm its way through the first array strBr and transfer elements to the second array strAr by a devious constraint. Hence recursion, winnowing out array elelments on each level.