VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleAnzahl der Dimensionen eines Arrays bestimmen |
Dim a() As String Dim b(2 To 8) As Long Dim c(8, 7, 6) As Byte MsgBox Dimension(a) 'ergibt 0 MsgBox Dimension(b) 'ergibt 1 MsgBox Dimension(c) 'ergibt 3
Private Declare Sub RtlMoveMemory Lib "kernel32" ( _
dest As Any, source As Any, ByVal bytes As Long)
Die eigentliche Funktion erwartet ein Array als Parameter (ansonsten wird eine entsprechende Fehler-Meldung generiert):
Function Dimension(ByRef Variable As Variant) As Integer
Dim Ptr As Long
If IsArray(Variable) Then
Ptr = VarPtr(Variable) + 8 'VB-Array
RtlMoveMemory Ptr, ByVal Ptr, 4 'SafeArrayDescriptor
RtlMoveMemory Ptr, ByVal Ptr, 4 'SafeArray-Struktur
If Ptr Then RtlMoveMemory Dimension, ByVal Ptr, 2
Else
Err.Raise 13 'Type mismatch
End If
End Function
© Jost Schwider, 31.12.2000-31.12.2000 - http://vb-tec.de/arrdim.htm