Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Arrays sind eine einfache Möglichkeit, mit VBA-Bordmitteln mehrere Werte unter einem einzigen Namen zu speichern und effizient auf diese Werte zuzugreifen. In diesem Artikel geben wir eine umfassende Einführung in die Verwendung von Arrays in VBA einschließlich der Definition, Deklaration, Manipulation und der Anwendung in verschiedenen Szenarien.
Arrays sind Datenstrukturen, die Elemente desselben Datentyps speichern. Dabei werden die Elemente in einer oder mehreren Dimensionen abgespeichert und können über den Index der verschiedenen Dimensionen abgefragt werden.
Normalerweise gibt man den Datentyp eines Arrays explizit an (zum Beispiel Integer oder String), wir können aber auch den Datentyp Variant zum Speichern beliebiger Informationen verwenden.
Bevor man Daten in ein Array schreiben kann, muss man diese deklarieren und dabei die Menge der aufzunehmenden Elemente definieren. Diese Menge kann man auch im Nachhinein anpassen. Die Deklaration von Arrays unterscheidet sich durch das Hinzufügen eines Klammernpaares zum Namen der Variablen von der Deklaration einfacher Variablen:
Dim strBeispiel(2) As String
Index 0- oder 1-basiert
Der Wert 2 in Klammern gibt den Wert des Indexes des letzten Elements an. Damit ist nicht eindeutig angegeben, wie viele Elemente das Array aufnehmen kann. Dies hängt davon ab, ob der Index 0- oder 1-basiert ist. Standardmäßig ist der Index 0-basiert. Wir können dies explizit festlegen, indem wir in dem jeweiligen Modul ganz oben eine entsprechende Angabe machen. Um sicherzustellen, dass wir tatsächlich einen 0-basierten Index verwenden, geben wir dort folgende Zeile an:
Option Base 0
Wir können auch einen 1-basierten Index verwenden:
Option Base 1
In diesem Fall kann das Array mit der Angabe 2 in Klammern maximal zwei Elemente aufnehmen, sonst drei.
Untersten und obersten Index-Wert herausfinden
Meist für das Durchlaufen von Array in einer Schleife wollen wir den Wert für den untersten und den obersten Index ermitteln. Dazu dienen die folgenden beiden Funktionen:
- LBound: Ermittelt den Wert des untersten Indexes.
- UBound: Ermittelt den Wert des obersten Indexes.
Wir testen diese Funktionen für ein Array mit 0-basiertem Index und dem größte Indexwert von 2:
Dim strBeispiel(2) As String Debug.Print "Unterer Indexwert: " & LBound(strBeispiel) Debug.Print "Oberer Indexwert: " & UBound(strBeispiel)
Das Ergebnis lautet:
Unterer Indexwert: 0 Oberer Indexwert: 2
Stellen wir Option Base 1 ein, erhalten wir:
Unterer Indexwert: 1 Oberer Indexwert: 2
Individuelle Indexwerte
Wir können die Indexwerte auch komplett selbst festlegen. Das folgende Array enthält die Indexwerte 2 und 3:
Dim strEigene(2 To 3)
Array füllen
Um das Array zu füllen, können wir direkt über den Indexwert auf das jeweilige Element zugreifen:
strBeispiel(0) = "Text 0" strBeispiel(1) = "Text 1" strBeispiel(2) = "Text 2"
Die Inhalte fragen wir wie folgt ab:
Debug.Print strBeispiel(0) Debug.Print strBeispiel(1) Debug.Print strBeispiel(2)
Array mit Werten initialisieren
Diese Werte können wir auch direkt in einer Zeile zuweisen. Dazu nutzen wir die Array-Funktion.
Da sie das Ergebnis als Variant-Array liefert, müssen wir das Array entsprechend deklarieren. Außerdem dürfen wir die Anzahl der Elemente hier nicht vordefinieren:
Dim varBeispiel() As Variant varBeispiel = Array("Text 0", "Text 1", "Text 2")
Array per Schleife auslesen
Mithilfe der oben vorgestellten Funktionen LBound und UBound können wir die Elemente auch in einer Schleife durchlaufen und ausgeben: