Wie erhalte ich die länge eines arrays mit vba?
In VBA bedeutet das Ermitteln der Länge eines Arrays, dass die Anzahl der Elemente gezählt wird, die sich in diesem Array befinden. Dazu müssen Sie das niedrigste und das höchste Element kennen. Um dies zu erreichen, können Sie die Funktionen UBOUND und LBOUND verwenden, die den oberen bzw. unteren Grenzwert zurückgeben.
Darüber hinaus können Sie auch COUNTA verwenden, eine Tabellenkalkulationsfunktion. Und in diesem Tutorial werden wir beide Methoden sehen, sodass Sie jede davon nach Ihren Wünschen verwenden können.
Schritte zum Ermitteln der Größe eines Arrays
Hier haben wir eine Tabelle, die eine Liste der Monate und die Verkaufsmenge für jeden Monat enthält.
- Stellen Sie sicher, dass Sie eine korrekt deklarierte Tabelle mit Zeilen und Spalten haben.
- Danach zwei weitere Variablen (da wir ein zweidimensionales Array haben), um die Grenzen des Arrays zu speichern.
- Dann müssen Sie eine Formel verwenden, in der Sie die Ubound-Funktion verwenden müssen, um die Obergrenze zu erhalten, und dann Lbound, um die Untergrenze des Arrays zu erhalten.
- Da Sie über ein zweidimensionales Array verfügen, müssen Sie beide an die Dimensionen gebunden sein und diesen Wert für die Variablen festlegen.
- Am Ende multiplizieren Sie die Längen, die Sie aus Ubound und Lbound erhalten haben, als Ober- und Untergrenze.
Hier ist der vollständige Code.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
Hinweis: Sie fragen sich bestimmt, ob die Tabelle, die ich Ihnen am Anfang des Artikels mitgeteilt habe, insgesamt 13 Zeilen enthält.
Wir haben jedoch eine Tabelle mit 13 Zeilen verwendet, da die erste Zeile ein Titel war. Und hier haben wir eine IF-Anweisung und eine ISEMPTY- Funktion verwendet, um zu überprüfen, ob das deklarierte Array keine Elemente enthält.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
Verwenden Sie COUNTA, um die Array-Länge zu ermitteln
Wie Sie wissen, ist ein Array eine Menge von Elementen, die ein- oder mehrdimensional strukturiert sind, und Sie können die COUNTA-Funktion ( Tabellenkalkulationsfunktion ) verwenden, um diese Elemente auf einmal zu zählen.
Im folgenden Code haben Sie dasselbe Array verwendet, das Sie zuvor deklariert haben, und dann eine Variable verwendet, um die Anzahl der von der Funktion zurückgegebenen Elemente zu speichern.
Und wie Sie sehen, ist das zurückgegebene Ergebnis 24, was der Gesamtzahl der Elemente entspricht, die wir im Array haben.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
Es gibt eine Sache, auf die Sie achten müssen: Diese Methode ist nicht in jeder Situation ideal, daher ist es immer gut, die zuvor besprochene Methode zu verwenden.
Sie können auch Code schreiben, um zunächst zu prüfen, ob das deklarierte Array nicht leer ist.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."