I found this using Google:
The number of dimensions of an array
http://www.devx.com/vb2themax/Tip/18265
Francesco Balena
Function ArrayDims(arr As Variant) As Integer
Dim i As Integer, bound As Long
On Error Resume Next
For i = 1 To 60
bound = LBound(arr, i)
If Err Then
ArrayDims = i - 1
Exit Function
End If
Next
End Function
- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
Peltier Technical Services, Inc. -
http://PeltierTech.com
_______
"Bob S." wrote in message
...
The Variant containing an Array is an argument to VBA function.
I have a VBA function MyFunc(X). I use it directly in an Excel worksheet
by
typing
=MyFunc(A1:A4) right into a cell. The argument comes into the function as
a
Range. That's fine.
Excel also lets you type something like {=MyFunc(ABS(A1:A4))} (using
ctrl-shift-Enter), and in this case the argument comes into the function
as a
Variant containing an array. The array is dimensioned X(4, 1). That's
fine
too. I can tell if this is the case by looking at the Typename of the
argument to see if it's a Range or a Variant.
Trouble comes if the user types a _Horizontal_ range instead of a vertical
one, as in
{=MyFunc(ABS(A1:D1))} . In that case the array comes in dimensioned as
X(4), with only _One_ subscript. I can't figure out how to identify this
case, so the function crashes if I use the wrong number of subscripts to
refer to the array elements.
Driving me crazy.
Thanks in advance.
Bob