| |
microsoft.public.vb.general.discussion |
> UBound(MyArray) - LBound(MyArray) + 1 > So, if the array is zero-based then the number of elements becomes > Ubound(MyArray) + 1 > If the array is 1-based then it is just UBound(MyArray). '*** Private Function ArrSize(ByRef inArr As Variant, _ Do If (TempDim <> -1) Then With outArr(ArrSize) ArrSize = ArrSize + 1 Private Sub SayArrayDim(ByRef inArr As Variant) NumDims = ArrSize(inArr, ArrDims()) If (NumDims) Then For LoopDims = 0 To NumDims - 1 SayDims = SayDims & ")" MsgBox SayDims Private Sub Form_Load() Call SayArrayDim(MyArr) Hope this helps, Mike -- EDais -- - Microsoft Visual Basic MVP -
though, for that you'd need something like this:
http://www.mvps.org/vbnet/code/helpers/getarraydims.htm
Here's another solution for you:
Private Type typArrayDim
adLow As Long
adHigh As Long
End Type
ByRef outArr() As typArrayDim) As Long
Dim TempDim As Long
TempDim = -1
On Error Resume Next
TempDim = LBound(inArr, ArrSize + 1)
On Error GoTo 0
ReDim Preserve outArr(ArrSize) As typArrayDim
.adLow = TempDim
.adHigh = UBound(inArr, ArrSize + 1)
End With
End If
Loop While (TempDim <> -1)
End Function
Dim ArrDims() As typArrayDim
Dim NumDims As Long
Dim LoopDims As Long
Dim SayDims As String
SayDims = TypeName(inArr)
SayDims = Left$(SayDims, Len(SayDims) - 1)
With ArrDims(LoopDims)
SayDims = SayDims & .adLow & " To " & .adHigh & _
IIf(LoopDims < (NumDims - 1), ", ", "")
End With
Next LoopDims
End If
End Sub
Dim MyArr(1 To 2, 3 To 4, 5 To 6, 7 To 8, 9 To 10) As Long
Dim EmptyArr() As Long
Dim MyVar As Long
Call SayArrayDim(EmptyArr)
Call SayArrayDim(MyVar)
End Sub
'***
WWW: Http://EDais.earlsoft.co.uk/
Work E-Mail: ED...@btclick.com
Other E-Mail: Mike.Sut...@btclick.com