VBA: Datenfelder und Arrays

vba array61

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.
459d1a55e114414ea7a9cea773a0a120
Weitete Varianten zum Erstellen eines mehrdimensionalen Arrays sind möglich. Probiere es aus.


Entdecke mehr von Clevercalcul

Subscribe to get the latest posts sent to your email.

2 Gedanken zu „VBA: Datenfelder und Arrays“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Plugin von Real Cookie Banner