1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
'**********************************************************************************************************
' Name: countDimensions
' Author: mielk | 2012-03-03
'
' Comment: Returns the number of dimensions of the given VBA array.
'
' Parameters:
' arr Array for which number of dimensions is to be returned.
'
' Returns:
' Integer The number of dimensions of the given VBA array.
' If the given value is not an array function returns -1.
' If the given value is declared as a dynamic array but its dimensions have not been
' declared yet, 0 is returned.
'
'
' --- Changes log -----------------------------------------------------------------------------------------
' 2012-03-03 mielk Function created.
' 2014-06-15 mielk Returned type changed to Integer to allow -1 to be returned.
' For non-arrays values -1 is returned.
'**********************************************************************************************************
Public Function countDimensions(arr As Variant) As Integer
Const METHOD_NAME As String = "countDimensions"
'------------------------------------------------------------------------------------------------------
Dim bound As Long
'------------------------------------------------------------------------------------------------------
If VBA.IsArray(arr) Then
On Error GoTo NoMoreDimensions
Do
bound = UBound(arr, countDimensions + 1)
countDimensions = countDimensions + 1
Loop
Else
countDimensions = -1
End If
'----------------------------------------------------------------------------------------------------------
NoMoreDimensions:
End Function