Danke schon mal..
sina
ungefähr so:
Gruß
Martin Beck
es wurde schon UBound vorgeschlagen, das würde in meinem Beispiel aber 17 liefern, und das willst Du ja wohl nicht.
Mit Do-Loop wie folgt:
Gruß
Martin Beck
MsgBox WorksheetFunction.Count(arr)
Gruß HW
Gruß HW
hast recht. Das Rad wurde neu erfunden, da ich nicht wußte, daß es das Rad schon gibt. ;-) Wieder was gelernt.
Im übrigen glaube ich, daß Sina sich ohnehin verrennt mit Ihrer Aufgabenstellung (siehe mal den länglichen Thread weiter unten).
Gruß
Martin Beck
aus der Hilfe zu UBound:
Gibt einen Wert vom Typ Long zurück, der den größten verfügbaren Index für die angegebene Dimension eines Datenfeldes enthält.
Es hängt also davon ab, wie Du den Array dimensionierst. In meinem Bespiel würde UBound ein falsches Ergebnis liefern. Nimm Hans' Lösung, die geht in jedem Fall.
Aber: Wie schon gesagt, bin ich der Meinung, daß der Weg über Arrays für Deine Aufgabenstellung ohnehin in die Irre führt.
Gruß
Martin Beck
Gruß HW
Um die Anzahl der Elemente in einem Excel VBA Array zu ermitteln, kannst Du die Funktionen LBound und UBound verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Array deklarieren: Zuerst musst Du ein Array erstellen und es mit Werten füllen.
Dim myArray() As String
myArray = Split("Müller,Meier,Schmidt", ",")
Bestimmen der Dimensionen: Verwende LBound und UBound, um die untere und obere Grenze des Arrays zu ermitteln.
Dim lowerBound As Long
Dim upperBound As Long
lowerBound = LBound(myArray)
upperBound = UBound(myArray)
Anzahl der Elemente berechnen: Die Anzahl der Elemente im Array erhältst Du durch die Berechnung der Differenz zwischen UBound und LBound.
Dim elementCount As Long
elementCount = upperBound - lowerBound + 1
MsgBox "Die Anzahl der Elemente im Array beträgt: " & elementCount
Falsche Verwendung von UBound: Oft wird UBound missverstanden, da es den höchsten Index des Arrays zurückgibt. Dieser ist nicht gleich der Anzahl der Elemente. Denke daran, dass Du die Differenz zwischen UBound und LBound berechnen musst.
Array nicht korrekt dimensioniert: Wenn Du ein Array mit einer falschen Dimensionierung erstellst, kann dies zu unerwarteten Ergebnissen führen. Stelle sicher, dass Du das Array richtig mit Dim dimensionierst.
Nutzung von Count: Die Verwendung von WorksheetFunction.Count(arr) kann zu falschen Ergebnissen führen, wenn das Array nicht richtig gefüllt ist oder die Syntax nicht stimmt.
Eine alternative Methode zur Ermittlung der Anzahl der Werte in einem Array ist die Verwendung von Schleifen. Hier ist ein Beispiel:
Dim count As Long
count = 0
For i = LBound(myArray) To UBound(myArray)
If Not IsEmpty(myArray(i)) Then
count = count + 1
End If
Next i
MsgBox "Anzahl der nicht leeren Elemente: " & count
Diese Methode zählt die nicht-leeren Elemente im Array und ist hilfreich, wenn Du eine spezifische Filterung benötigst.
Hier sind einige praktische Beispiele, wie Du die Anzahl der Elemente in einem Array ermitteln kannst:
Ein Array mit Zahlen:
Dim numbers() As Integer
numbers = Array(1, 2, 3, 4, 5)
MsgBox "Die Anzahl der Zahlen im Array beträgt: " & (UBound(numbers) + 1)
Ein Array mit Text:
Dim names() As String
names = Split("Anna,Berta,Carl", ",")
MsgBox "Die Anzahl der Namen im Array beträgt: " & (UBound(names) + 1)
Diese Beispiele zeigen, wie einfach es ist, die Anzahl der Elemente in einem Array mithilfe von VBA zu ermitteln.
Dimensionierung: Achte darauf, wie Du Dein Array dimensionierst. Verwende dynamische Arrays, wenn die Anzahl der Elemente variabel ist.
UBound und LBound: Nutze UBound und LBound zusammen, um immer die korrekte Anzahl der Elemente zu ermitteln, unabhängig von der Dimensionierung.
Debugging: Verwende Debugging-Werkzeuge in VBA, um den Inhalt Deines Arrays zu prüfen, und stelle sicher, dass die Werte wie erwartet gespeichert sind.
1. Wie kann ich die Anzahl der Elemente in einem leeren Array ermitteln?
Die Anzahl der Elemente in einem leeren Array ist nicht definiert. Du solltest zuerst prüfen, ob das Array leer ist, bevor Du LBound oder UBound verwendest.
2. Was passiert, wenn ich UBound für ein nicht initialisiertes Array verwende?
Wenn Du UBound auf ein nicht initialisiertes Array anwendest, wirft VBA einen Laufzeitfehler. Stelle sicher, dass das Array initialisiert ist, bevor Du diese Funktion aufrufst.