window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Arrays

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Arrays – auch Datenfelder genannt – bieten die Möglichkeit, mehrere gleichartige Daten in einer Art Liste zu speichern und über einen Index darauf zuzugreifen. Array können ein- oder mehrdimensional sein. Dieser Artikel zeigt, wie Sie Arrays deklarieren, diese mit Daten füllen und die gewünschten Informationen wieder abrufen. Außerdem lernen Sie eine Reihe VBA-Anweisungen kennen, mit denen der Umgang mit Arrays noch viel leichter wird.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1201_Arrays.mdb.

Array-Datentyp

Ein Array kann beliebige Datentypen annehmen. Die einzige Einschränkung ist: Jedes Element des Array muss den gleichen Datentyp besitzen. Dies ist jedoch keine große Einschränkung, denn die meisten Anwendungen von Array basieren ohnehin auf gleichartigen Daten.

Einfache Beispiele

Im einfachsten Fall ist ein Array zweidimensional. Das bedeutet, dass Sie für jeden Indexwert des Array entsprechend seiner Größe einen Wert im Array speichern können.

Wofür benötigt man solche Konstrukte Nun, Sie könnten zum Beispiel zehn gleichartige Werte benötigen, die Sie in entsprechenden Variablen speichern – etwa so:

Dim str1 As String
Dim str2 As String
Dim str3 As String
...
str1 = "Müller"
str2 = "Meier"
str3 = "Schmitz"

Mit diesen Variablen können Sie nun verschiedene Dinge im Code anstellen. Dies hat nur zwei Nachteile: Erstens müssen Sie jeden Zugriff auf einen dieser Werte separat durchführen, auch wenn Sie mal eben die Werte aller Variablen ausgeben möchten. Mal eben die Daten aus einer Tabelle in die Variablen schreiben Macht zehn Anweisungen. Die Daten im Debug-Fenster ausgeben Wieder zehn Anweisungen. Und der zweite Nachteil: Wenn ein elfter Wert hinzu kommt, müssen Sie den kompletten Code anpassen.

Für solche Fälle gibt es Array. Für ein Array benötigen Sie nur ein einzige Variable, die beliebig viele Werte aufnimmt. Sie können gleich bei der Deklaration festlegen, wieviele Werte dies sind oder die Obergrenze später anpassen.

Schauen wir uns an, wie dies funktioniert. Wenn Sie beispielsweise eine Variable mit vier Werten verwenden möchten, deklarieren Sie diese wie folgt:

Dim strZahlen(3)

Wieso lautet der Wert in Klammern 3, wenn wir doch drei Werte benötigen Ganz einfach: Der hier angegebene Wert gibt den Wert des größten Index-Eintrags an. Normalerweise beginnt die Zählung des Index bei Arrays bei 0, also können Sie die vier Indexwerte 0, 1, 2 und 3 verwenden.

In der folgenden Prozedur versuchen wir, mehr als diese vier Einträge zu füllen:

Public Sub EinfachesArray()
     Dim strZahlen(3) As String
     strZahlen(0) = "Null"
     strZahlen(1) = "Eins"
     strZahlen(2) = "Zwei"
     strZahlen(3) = "Drei"
     strZahlen(4) = "Vier"
End Sub

Dies führt zu dem Fehler aus Bild 1, und zwar in der Zeile, die versucht, einen Wert für den Index 4 zu vergeben.

Fehler beim Versuch, einen nicht vorhandenen Eintrag im Array zu referenzieren

Bild 1: Fehler beim Versuch, einen nicht vorhandenen Eintrag im Array zu referenzieren

Die Tatsache, dass der erste Indexwert 0 lautet, ist nicht unumstößlich. Wenn Sie im Kopf des betroffenen VBA-Moduls die folgende Zeile einfügen, beginnt die Zählung bei 1:

Option Base 1

Der Fehler bei der obigen Prozedur tritt nun nicht erst in der vierten, sondern direkt in der ersten Zeile auf: den Index mit dem Wert 0 gibt es nämlich nun nicht mehr. Normalerweise benötigen Sie aber keine Index-änderung – es sei denn, Sie möchten Daten zwischen einem Array und einem anderen Objekt hin- und hertransferieren, dessen Index erst bei 1 beginnt. Dann können Sie besser den kleinsten Index mit Option Base festlegen als überall 1 abzuziehen oder hinzuzuaddieren, um mit gleichen Indexwerten arbeiten zu können.

Indexbereich

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar