Programmieren mit Arrays

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

Dass Sie unter Access Daten in Tabellen speichern und gezielt darauf zugreifen können, wissen Sie als Access [basics]-Leser schon längst. Aber was, wenn Sie nur ein paar gleichartige Daten zwischenspeichern und wieder darauf zugreifen möchten Legen Sie dann im VBA-Code für jedes Element eine eigene Variable an Nein! Hier kommen zum Beispiel die Arrays, auch Datenfelder genannt, zum Einsatz. Der vorliegende Artikel zeigt, wie Sie Array erstellen, mit Daten füllen und die Daten wieder auslesen.

Beispieldatenbank

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

Arrays

Array sind prinzipiell eine Art Tabelle, wobei Sie nicht über Datensätze und Feldnamen auf den in einem Elemend des Array gespeicherten Wert zugreifen, sondern über Index-Werte.

Zusätzlich kann ein Array eine, zwei oder auch mehr Dimensionen enthalten und diese mit Elementen füllen.

Ein Array mit einer Dimension würde beispielsweise einer Tabelle mit einem einzigen Feld entsprechen und ein Array mit zwei Dimensionen einer Tabelle mit einem bis n Feldern. Arrays mit mehr als zwei Dimensionen lassen sich schlecht auf Tabellen übertragen.

Eindimensionale Arrays

Mit einem eindimensionalen Array lassen sich einfache Wertereihen speichern – beispielsweise die Monatsnamen. Um die Vereinfachung durch den Einsatz von Array zu verdeutlichen, schauen wir uns zunächst an, wie Sie Monatsnamen auf umständliche Weise in Variablen speichern können. Dazu legen Sie in einem Modul namens mdlArrays (VBA-Editor mit Alt + F11 ) öffnen, dann Einfügen|Modul auswählen) zunächst die öffentlich deklarierten String-Variablen an (dieses und die folgenden Beispiele finden Sie im Modul mdlArrays):

Public strMonat01 As String
Public strMonat02 As String
Public strMonat03 As String
...
Public strMonat12 As String

In einer Prozedur namens MonateInVariablen füllen Sie diese mit den entsprechenden Werten:

Public Sub MonateInVariablen()
     strMonat01 = "Januar"
     strMonat02 = "Februar"
     strMonat03 = "März"
     ...
     strMonat12 = "Dezember"
End Sub

Führen Sie diese Prozedur aus, indem Sie die Einfügemarke in der Prozedur platzieren und auf F5 drücken. Danach können Sie die Werte der einzelnen Variablen etwa im Direktfenster (Strg + G) wie folgt abfragen:

Debug.Print strMonat03
März

Wenn Sie per VBA auf eine der Variablen zugreifen möchten, um den Namen des Monats zu ermitteln, müssen Sie immer den genauen Variablen verwenden. Es gibt keine Möglichkeit, die zwölf Variablen beispielsweise innerhalb einer Schleife schnell auszugeben.

Dies ist ein tolles Betätigungsfeld für Array. Ein Array, das eine bestimmte Menge Daten gleichen Datentyps aufnehmen soll (dies ist eine Einschränkung, die Sie beachten müssen), deklarieren Sie fast genauso wie eine normale Variable dieses Datentyps. Der einzige Unterschied ist, dass Sie den größten zu erwartenden Wert für den Index hinter dem Variablennamen in Klammern angeben:

Public strMonate(11) As String

Im Gegensatz zu den weiter unten besprochenen dynamischen Arrays handelt es sich hierbei um ein statisches Array.

Sicher werden Sie sich fragen, warum hier die Zahl 11 und nicht die der Anzahl der Monate entsprechende Zahl 12 angegeben wird. Der Grund ist, dass die Indexwerte standardmäßig immer mit 0 beginnen. Das bedeutet, das die Variable strMonate Werte für die Indexwerte 0 bis 11 aufnehmen kann. Der erste Eintrag des Arrays strMonate wird also mit dem Indexwert 0, der zweite mit 1 und so weiter festgelegt:

Public Sub MonateInArray()
     strMonate(0) = "Januar"
     strMonate(1) = "Februar"
     strMonate(2) = "März"
     ...
     strMonate(11) = "Dezember"
End Sub

Dementsprechend liefert etwa die Abfrage des Wertes mit dem Index 3 den vierten Eintrag des Arrays, hier April:

Debug.Print strMonate(3)
April

Nun scheint es unkomfortabel zu sein, nicht die dem Monat entsprechende Zahl für den Zugriff auf das Array zu verwenden. Dies lässt sich jedoch leicht ändern. Wenn Sie nur einen Wert für die Anzahl der Elemente angeben, geht VBA davon aus, dass der Index 0-basiert verwaltet wird. Sie können den Wertebereich für den Indexbereich jedoch detailliert festlegen. In diesem Fall möchten wir gern die Indexwerte 1 bis 12 verwenden. Dazu deklarieren Sie die Array-Variable wie folgt:

Public strMonate(1 To 12) As String

Die Monatsnamen weisen Sie dementsprechend nun mit den Indexwerten 1 bis 12 zu:

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