Mit der hier vorgestellten Funktion CheckArrayDim wird eine beliebige Variable (Übergabe) auf DatenTyp, Dimensionszahl u. FeldArrayIndex geprüft. Dies ist ein einfache Beispielfunktion, die auf keine API-Funktion zurückgreift. ' Diese Funktion analysiert die in [vWert] übergebene Variable. ' ' vWert : beliebiger VariablenTyp ' ' Rückgabe ' iTyp : VariablenTyp ' iDim : Anzahl der Dimensionen ' iIndex() : IntegerArray->ReDim in Funktion ' ' ArrayFeldIndices ' iIndex(x, 0) : unterer Index, x.Dimension ' iIndex(x, 1) : oberer Index, x.Dimension ' Function CheckArrayDim(ByVal vWert As Variant, _ iTyp As Integer, _ iDim As Integer, _ iIndex() As Integer) As Long Dim D As Integer Dim I As Integer Dim U As Integer Dim nErr As Long Dim Ret As Long ' iTyp : ' 0 : Empty ' Variant ' 1 ' 2 : Integer ' 3 : Long ' 4 : Single ' 5 : Double ' 8 : String ' 11 : Boolean ' 12 : Variant ' <Array>: +8192 ' vbArray ' 8194 : Integer ' 8195 : Long ' 8195 = 3 + 8192 ' 8196 : Single ' 8197 : Double ' 8200 : String ' 8203 : Boolean ' 8204 : Variant iTyp = VarType(vWert) If iTyp >= vbArray Then ' ist Array On Error Resume Next ' Dimensionen bestimmen Do D = D + 1 U = UBound(vWert, D) With Err If .Number <> 0 Then ' Err: 9 nErr = .Number .Number = 0 D = D - 1 ' sub 1, weil Err End If End With Loop While nErr = 0 iDim = D On Error GoTo Err_CAD Else ' kein Array End If ' ArrayFeldIndices ReDim iIndex(iDim, 1) D = 0 For I = 1 To iDim D = D + 1 iIndex(I, 0) = LBound(vWert, D) ' unterer Index iIndex(I, 1) = UBound(vWert, D) ' oberer Index Next I ' Ret = 0 , o.k. ' <> 0 , Fehler Exit_CAD: CheckArrayDim = Ret Exit Function Err_CAD: With Err Ret = .Number .Clear End With Resume Exit_CAD End Function Testaufruf für CheckArrayDim Function CheckVariable() As Long Dim A As Long Dim AA(10) As Long Dim AAA(10, 5) As Long Dim AAAA(10, 5, 2) As Long Dim I As Integer Dim vMsg As Variant Dim iTyp As Integer Dim iDim As Integer Dim iIndex() As Integer Dim Ret As Long ' z.B.: Ret = CheckArrayDim(AAA, iTyp, iDim, iIndex) MsgBox "Ret : " & Ret & vbCr _ & "Typ : " & iTyp & vbCr _ & "Dim : " & iDim, vbInformation, "CheckArrayDim" & Space(10) ' AAA AA A ' Ret : 0 0 0 ' Typ : 8195 8195 3 ' Dim : 2 1 0 vMsg = "unterer -" & Space(2) & "oberer Index:" & vbCr For I = 1 To iDim vMsg = vMsg & iIndex(I, 0) & Space(15) & iIndex(I, 1) & vbCr Next I MsgBox vMsg, vbInformation, "ArrayFeldIndices" ' AAA ' unterer - oberer Index: ' 0 10 ' 0 5 End Function Dieser Tipp wurde bereits 9.186 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |