Я полагаю, что, возможно, предоставил ошибочную информацию в комментарии к предыдущему вопросу.Application.Transpose возвращает транспонированный массив, как и любая функция.Он не обрабатывает его «на месте», как параметр ByRef.
'NOT this was
Application.WorksheetFunction.Transpose (MultiArrPaerchen)
'Do it THIS WAY
MultiArrPaerchen = Application.WorksheetFunction.Transpose(MultiArrPaerchen)
FWIW, автоматически добавленное пространство должно рассматриваться как указание на то, что синтаксис был неудачным.
Первый ReDim регулирует второй ранг;второй ранг - единственный, который можно изменить, если спеть аргумент Preserve с ReDim.
Первый транспонирование переворачивает первый и второй ранг.Теперь вы можете ReDim оригинального первого ранга, который не является последним рангом.
Второй ReDim корректирует последний ранг (который изначально был первым).
Второй Transpose берет перевернутый массив ивозвращает его в исходное положение с новыми размерами в обоих разрядах.
Sub test()
Dim MultiArrPaerchen As Variant, m As Long, n As Long
m = 1000
n = 1000
ReDim MultiArrPaerchen(1 To m, 1 To n)
Debug.Print LBound(MultiArrPaerchen, 1) & " to " & UBound(MultiArrPaerchen, 1) & ", " & _
LBound(MultiArrPaerchen, 2) & " to " & UBound(MultiArrPaerchen, 2)
'results: 1 to 1000, 1 to 1000
'UBounbds for 1 to 18, 1 to 120
m = 18
n = 120
ReDim Preserve MultiArrPaerchen(LBound(MultiArrPaerchen, 1) To UBound(MultiArrPaerchen, 1), _
LBound(MultiArrPaerchen, 2) To n)
Debug.Print LBound(MultiArrPaerchen, 1) & " to " & UBound(MultiArrPaerchen, 1) & ", " & _
LBound(MultiArrPaerchen, 2) & " to " & UBound(MultiArrPaerchen, 2)
'results: 1 to 1000, 1 to 120
MultiArrPaerchen = Application.Transpose(MultiArrPaerchen)
Debug.Print LBound(MultiArrPaerchen, 1) & " to " & UBound(MultiArrPaerchen, 1) & ", " & _
LBound(MultiArrPaerchen, 2) & " to " & UBound(MultiArrPaerchen, 2)
'results: 120, 1 to 1000
ReDim Preserve MultiArrPaerchen(LBound(MultiArrPaerchen, 1) To UBound(MultiArrPaerchen, 1), LBound(MultiArrPaerchen, 2) To m)
Debug.Print LBound(MultiArrPaerchen, 1) & " to " & UBound(MultiArrPaerchen, 1) & ", " & _
LBound(MultiArrPaerchen, 2) & " to " & UBound(MultiArrPaerchen, 2)
'results: 1 to 120, 1 to 18
MultiArrPaerchen = Application.Transpose(MultiArrPaerchen)
Debug.Print LBound(MultiArrPaerchen, 1) & " to " & UBound(MultiArrPaerchen, 1) & ", " & _
LBound(MultiArrPaerchen, 2) & " to " & UBound(MultiArrPaerchen, 2)
'results: 1 to 18, 1 to 120
End Sub