Как определить вид массива

Автор ost, 7 августа 2021, 13:25

0 Пользователи и 1 гость просматривают эту тему.

ost

Доброго.
Как определить вид массива (одномерный, двумерный или массив массивов)? Может, готовым кодом угостите =)
Спасибо.

UPD

Пока написал такое

function ArrayShape(aAr)
' возвращает 0 - передан не массив
'                  1 - одномерный
'                  2 - двумерный
'                  3 - массив массивов
if not isArray(aAr) then
 ArrayShape = 0
elseif isArray(aAr(0)) then
 ArrayShape = 3
else
 On Error GoTo labelEh
 lbound(aAr,2)
 ArrayShape = 2 : goto labelEnd
 labelEh:
 ArrayShape = 1
end if
labelEnd:
On Error GoTo 0
end function



Проще никак?

sokol92

Попробуйте вариант, который определяет размерность массива.

' Возвращает число измерения массива (не более 99). Если 0, то arr не массив.
Function GetNdims(arr) As Long
  Dim i As Long, j As Long
  On Error GoTo ErrLabel
  For i = 1 To 99
    j = UBound(arr, i)
    GetNdims = GetNdims + 1
  Next i
ErrLabel:
End Function
Владимир.