VBA: Datenfelder und Arrays

Arrays sind Datenfelder, die je nach Dimensionierung eine unterschiedliche Anzahl von Daten aufnehmen können. Ein Array kannst du dir als Tabelle vorstellen, die nicht real sichtbar, aber dennoch vorhanden ist.

Ein Array ist eine Variable, die mehrere Datenfelder und damit auch mehrere Daten enthält. Alle Datenfelder haben den Datentyp, der für das Array deklariert wurde. Wurde kein Datentyp festgelegt, hat das Array automatisch den Datentyp Variant.

Zur Deklarierung von Variablen kannst du auch gern in einem früheren Beitrag nachlesen.

Eindimensionale Arrays

In einem eindimensionalen Array werden die Daten, ähnlich wie in einer einspaltigen Tabelle, hintereinander als Datenelemente gespeichert.

Ein Beispiel: Du möchtest die Wochentage in einem Array speichern, das Array soll also sieben Elemente bekommen. Hier die erste Möglichkeit:

Sub Woche1()
Dim arrWoche(1 To 7)
arrWoche(1)=“Montag“
arrWoche(2)=“Dienstag“
arrWoche(3)=“Mittwoch“
arrWoche(4)=“Donnerstag“
arrWoche(5)=“Freitag“
arrWoche(6)=“Samstag“
arrWoche(7)=“Sonntag“
MsgBox arrWoche(5)
End Sub

Startest du das Makro, zeigt es dir am Schluss diese Mitteilung in einer MsgBox:

VBA_Array1

Den Index des Arrays hast du bereits mit der Deklaration vorbestimmt, indem du „1 To 7“ festgelegt hast. Das erste Element hat demnach den Index „1“.

In einem zweiten Beispiel wird dies nicht festgelegt.

Sub Woche2()
Dim arrWoche
arrWoche=Array(„Montag“,“Dienstag“,“Mittwoch“,“Donnerstag“,“Freitag“,“Samstag“,“Sonntag“)
MsgBox arrWoche(5)
End Sub

Nachdem du das Makro gestartet hast, zeigt dir die MsgBox ein anderes Ergebnis als beim ersten Makro.

VBA_Array2

Der Grund ist, dass der Index ohne besondere Deklaration immer mit „0“ beginnt. Die „0“ entspricht damit dem ersten Element, dem Montag, die „5“ demzufolge dem Samstag.

Beachte bitte, dass hier das Array in einer anderen Art und Wiese mit den Daten gefüllt wird. Die Datenelemente werden nicht einzeln zugewiesen, sondern als Klammerausdruck hintereinander aufgezählt. Vor die Klammer wird das Wort „Array“ gesetzt.

Es gibt noch eine weitere Möglichkeit, dem Array Werte zuzuweisen. Dazu hast du auf deinem Arbeitsblatt die Wochentage aufgelistet.

VBA_Array3

Deklariere dazu das Array vollständig, mit Dimensionierung und Festlegung des Datentyps.

Sub Woche3()
Dim arrWoche(7) As Variant
Dim i As Integer
For i=1 To 7
arrWoche(i)=Cells(1+i,2)
Next i
MsgBox arrWoche(5)
End Sub

In der Deklaration legst du fest, dass das Array sieben Elemente und den Datentyp Variant haben soll.

Zusätzlich deklarierst du die Zählvariable „i“.

Mit einer For-Next-Schleife durchläuft das Makro jetzt schrittweise den Tabellenbereich B2:B8 und weist die Inhalte den Array-Elementen zu.

Statt „Range“ verwendest du hier „Cells“. Die Zeile ist im ersten Schritt (i=1) 1+i, also 2, die Spalte ist 2.

Die MsgBox teilt dir das fünfte Element mit, Freitag.

VBA_Array4

Die Ausgabe eines Array-Elements erfolgte bisher über eine MsgBox. Die Ausgabe kann natürlich auch in eine Zelle des Arbeitsblattes erfolgen.

Nehme z.B. Sub Woche2() und gestalte es diesbezüglich um.

Sub Woche4()
Dim arrWoche
arrWoche=Array(„Montag“,“Dienstag“,“Mittwoch“,“Donnerstag“,“Freitag“,“Samstag“,“Sonntag“)
Range(„E2“)=arrWoche(5)
End Sub

Ergebnis:

VBA_Array5
Wie schon oben gesehen, wird ab 0 gezählt. Das Element 5 ist wieder der Samstag.

Mehrdimensionale Arrays

Grundsätzlich gehst du bei mehrdimensionalen Arrays nicht anders vor als bei eindimensionalen.

Im Beispiel liegt dir eine Tabelle mit drei Zeilen und zwei Spalten vor, die Zahlenwerte enthält.

Diese Tabelle willst du in ein Array einlesen. Hier ist eine Möglichkeit:

VBA_Array6

Sub Zahlen1()
Dim arrWerte() As Variant
arrWerte()=Range(„B138:C140“)
MsgBox arrWerte(2,2)
End Sub

Deklariere zuerst die Variable. Mit den Klammern hinter „arrWerte“ wird die Variable zum Array. Fülle dann das Array mit den Werten aus dem Bereich B138:C140.

Die MsgBox zeigt dir abschließend den Wert aus der zweiten Zeile und der zweiten Spalte.

Weitete Varianten zum Erstellen eines mehrdimensionalen Arrays sind möglich. Probiere es aus.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s