In der vorherigen Lektion haben wir uns Variablen angesehen, in die bestimmte Daten geschrieben werden können, die jedoch nicht mehr als einen Wert enthalten können. Um diese Einschränkung zu umgehen, gibt es in VBA Arrays, die mehrere Werte speichern können.
Hier sind einige Beispiele für verschiedene Arrays:
Sub variables() 'Ein Beispiel für die Deklaration einer Variablen Dim var1 As String 'Ein Beispiel für die Deklaration eines eindimensionalen Arrays Dim array1(4) As String 'Ein Beispiel für die Deklaration eines zweidimensionalen Arrays Dim array2(4, 3) As String 'Ein Beispiel für die Deklaration eines dreidimensionalen Arrays Dim array3(4, 3, 2) As String End Sub
Dim array1(4) As String
Ein eindimensionales Array kann man sich als eine Tabelle vorstellen, die aus einer Spalte besteht. Das Array array1(4) ist ein eindimensionales Array, das 5 Datensätze enthalten kann. Warum 5? Weil die Anzahl der Datensätze im Array bei Null beginnt (0, 1, 2, 3, 4).
Betrachten wir nun ein zweidimensionales Array:
Dim array2(4, 3) As String
Es wird bereits wie eine Tabelle mit 5 Zeilen und 4 Spalten aussehen:
'Zuweisen von Werten für farbige Zellen array2(0, 0) = „Wert in roten Blutkörperchen“ array2(4, 1) = „Wert in grüner Zelle“ array2(2, 3) = „Der Wert in der blauen Zelle“
Konstanten können wie Variablen zum Speichern von Werten verwendet werden, der Unterschied besteht jedoch darin, dass sich Werte nicht ändern können. Wir können eine Konstante hinzufügen, um eine Wiederholung des Werts zu vermeiden, zum Beispiel 13.14:
Sub const_example() Cells(1, 1) = Cells(1, 2) * 13.14 Cells(2, 1) = Cells(2, 2) * 13.14 Cells(3, 1) = Cells(3, 2) * 13.14 Cells(4, 1) = Cells(4, 2) * 13.14 Cells(5, 1) = Cells(5, 2) * 13.14 End Sub
Dadurch ist der Code leichter zu verstehen und zu bearbeiten. Außerdem können Sie den Wert der Konstante ganz einfach ändern:
Sub const_example() 'Eine Konstante deklarieren + einen Wert zuweisen Const ANNUAL_RATE As Double = 13.14 Cells(1, 1) = Cells(1, 2) * ANNUAL_RATE Cells(2, 1) = Cells(2, 2) * ANNUAL_RATE Cells(3, 1) = Cells(3, 2) * ANNUAL_RATE Cells(4, 1) = Cells(4, 2) * ANNUAL_RATE Cells(5, 1) = Cells(5, 2) * ANNUAL_RATE End Sub
Umfang der Variablen
Wenn eine Variable zu Beginn einer Prozedur (Sub) deklariert wird, kann sie nur in dieser Prozedur verwendet werden. Der Wert der Variablen ist nach Ausführung der Prozedur nicht mehr verfügbar.
Sub procedure1() Dim var1 As Integer '=> Die Variable ist nur in dieser Prozedur gültig End Sub Sub procedure2() '=> var1 kann hier nicht verwendet werden End Sub
Um eine Variable in einer beliebigen Modulprozedur zu verwenden, müssen wir sie nur ganz am Anfang des Moduls deklarieren. Und wenn Sie eine Variable wie diese deklarieren, bleibt sie verfügbar, bis die Arbeitsmappe geschlossen wird.
Dim var1 As Integer Sub procedure1() '=> var1 kann hier verwendet werden End Sub Sub procedure2() '=> var1 kann hier auch verwendet werden End Sub
Wenn Sie in allen Modulen des Buches dieselbe Variable verwenden möchten, sollten Sie im vorherigen Beispiel nur Dim durch Global ersetzen:
Global var1 As Integer
Um eine Variable nach der Ausführung der Prozedur, in der sie erscheint, zu verwenden, ersetzen Sie Dim durch Static:
Sub procedure1() Static var1 As Integer End Sub
Um die Werte aller Variablen in der Prozedur zu verwenden, fügen Sie Static vor Sub hinzu:
Static Sub procedure1() Dim var1 As Integer End Sub
Hier ist ein kurzes Beispiel, wie Sie Ihren eigenen Typ erstellen können:
'Erstellen eines Variablentyps Type customers last_name As String first_name As String End Type Sub variables() 'Deklaration einer Variablen Dim cust1 As customers 'Cust1 einen Wert zuweisen cust1.last_name = "Smith" cust1.first_name = "John" 'Anwendungsbeispiel MsgBox cust1.last_name & " " & cust1.first_name End Sub