kann ich irgendwie die Anzahl der Elemente eines Arrays ermitten ohne die "For Each" Schleife zu verwenden (z.B. bei eigenen Datentypen) ?
Ciao
Ruben
Sub AutoAuswahl()
Dim AutoArray(10) As Auto
AutoArray(0).PS = 100
AutoArray(0).Marke = "Skoda"
AutoArray(1).PS = 150
AutoArray(1).Marke = "Mitsubishi"
AutoArray(2).PS = 218
AutoArray(2).Marke = "Subaru"
End Sub
Um die Größe eines Arrays in Excel VBA zu ermitteln, kannst du die Funktion UBound verwenden. Diese Funktion gibt den höchsten Index eines Arrays zurück. Hier sind die Schritte:
Ein eindimensionales Array erstellen:
Dim myArray(5) As Integer
Werte in das Array einfügen:
myArray(0) = 1
myArray(1) = 2
myArray(2) = 3
myArray(3) = 4
myArray(4) = 5
Die Größe des Arrays ermitteln:
Dim arraySize As Integer
arraySize = UBound(myArray) + 1 ' +1, da UBound den höchsten Index zurückgibt
MsgBox "Die Größe des Arrays ist: " & arraySize
Für mehrdimensionale Arrays musst du die Dimension angeben:
Dim myMultiArray(1 To 3, 1 To 2) As Integer
Dim dimensionSize As Integer
dimensionSize = UBound(myMultiArray, 1) ' Gibt die Größe der ersten Dimension zurück
MsgBox "Die Größe der ersten Dimension ist: " & dimensionSize
Fehler: "Subscript out of range"
Fehler: UBound gibt einen unerwarteten Wert zurück
Eine weitere Methode zur Ermittlung der Größe eines Arrays ist die Verwendung der Array-Funktion in Kombination mit UBound. Du kannst auch die Anzahl der Elemente mit der Funktion Count in einer Collection ermitteln.
Beispiel:
Dim myArray() As Variant
myArray = Array(1, 2, 3, 4, 5)
Dim elementCount As Integer
elementCount = UBound(myArray) - LBound(myArray) + 1
MsgBox "Die Anzahl der Elemente im Array ist: " & elementCount
Hier ist ein praktisches Beispiel, das zeigt, wie man die Anzahl der Elemente in einem mehrdimensionalen Array ermitteln kann:
Public Type Auto
PS As Integer
Marke As String
End Type
Sub AutoBeispiel()
Dim AutoArray(1 To 3) As Auto
AutoArray(1).PS = 100
AutoArray(1).Marke = "Skoda"
AutoArray(2).PS = 150
AutoArray(2).Marke = "Mitsubishi"
AutoArray(3).PS = 218
AutoArray(3).Marke = "Subaru"
Dim anzahlElemente As Integer
anzahlElemente = UBound(AutoArray) ' Gibt 3 zurück
MsgBox "Die Anzahl der Autos im Array ist: " & anzahlElemente
End Sub
Nutze die LBound-Funktion, um den niedrigsten Index eines Arrays zu ermitteln. Dies ist besonders nützlich, wenn du mit Arrays arbeitest, die nicht bei 0 beginnen.
Achte darauf, dass die Dimensionen deines Arrays korrekt sind, um Fehler zu vermeiden.
Verwende Typen wie Variant, um flexiblere Arrays zu erstellen, die unterschiedliche Datentypen speichern können.
1. Wie kann ich die Länge eines Arrays in VBA ermitteln?
Du kannst die UBound-Funktion verwenden, um die maximale Größe eines Arrays zu ermitteln. Füge dazu 1 hinzu, um die Anzahl der Elemente zu erhalten.
2. Gibt es eine Möglichkeit, die maximale Größe eines Arrays zu ermitteln? Die maximale Größe eines Arrays in VBA hängt von der Version ab. In der Regel ist die maximale Dimension 60 und die maximale Größe 2 GB, aber dies kann variieren.