Eine Variable ist ein Platzhalter, den man in mathematische Formeln einfügt, um an dieser Stelle später einen Wert zuweisen zu können.
Es gibt verschiedene Arten von Variablen. Man unterscheidet sie zunächst nach den Inhalten, die sie aufnehmen sollen. Hier gibt es beispielsweise Variablen für Zahlen, für Texte oder Inhalte wie Datum und Uhrzeiten.
Eine weitere Variablenart sind die Feldvariablen, auf die ich besonders eingehe, da sie sich im Umfeld von Makros besonders gut einsetzen lassen.
Beispiele:
a = 12; b = 105; name = "Meier"
Das auffälligste Merkmal der Feldvariable ist ein Wert der in Klammern hinter dem Variablennamen steht. Beispiel: a (1). Dieser Wert kann aber auch wieder in Form einer Variable erscheinen Bespiel: a (b).
Während man bei den "normalen" Variablen für jeden Wert einen eindeutigen Namen vergeben muß, hat man bei Feldvariablen nur einen Namen, da die unterschiedlichen Inhalte über die Felder definiert werden.
Beispiel:
Variable | Inhalt | Feldvariable | Inhalt |
---|---|---|---|
Vorname | Hans | adr(1) | Hans |
Name | Meier | adr(2) | Meier |
Straße | Steinweg 4 | adr(3) | Steinweg 4 |
PLZ | 12345 | adr(4) | 12345 |
Ort | Musterstadt | adr(5) | Musterstadt |
Telefon | 05333 / 111111 | adr(6) | 05333 / 111111 |
Der Hauptvorteil der Feldvariablen ist, daß man sie gut in Verbindung mit Schleifen verwenden kann.
Bei den Feldvariablen unterscheidet man wiederum eindimensionale und mehrdimensionale Felder. VBA erlaubt bis zu 60 Dimensionen. Ich werde mich an dieser Stelle auf Beispiele bis 3 Dimensionen beschränken, da das für die Darstellung eine Excel-Arbeitsmappe im allgemeinen ausreicht. Auch sollte das genügen, das Prinzip zu verstehen.
In der Tabelle weiter oben habe ich ein Beispiel für eindimensionale Feldvariablen dargestellt. Damit läßt sich allerdings nur ein Datensatz bezeichnen. Das wird in den meisten Fällen nicht ausreichen. Wir benötigen also für ein Tabellenblatt zweidimensionale Feldvariablen.
Beispiel:
adr(a, b)
A | B | C | D | E | F | |
1 | Vorname | Name | Straße | PLZ | Ort | Telefon |
2 | Hans | Meier | Steinweg 4 | 12345 | Musterstadt | 05333 / 111111 |
3 | Peter | Schulze | Hauptstraße 56 | 23456 | Testdorf | 066666 / 22222 |
4 | Heinrich | Peters | Gartenweg 11 | 76543 | Heimat | 077677 / 121212 |
5 | ... |
In dieser Beispieltabelle erkennt man sehr schön den Zusammenhang der zweidimensionalen Felder mit dem Aufbau eines Tabellenblattes. Es bietet sich an, die erste Dimension (a) für die Zeilennummer zu verwenden, und die zweite Dimension (b) für die Spaltennummer. Grundsätzlich funktioniert das auch umgekehrt, aber so ist es übersichtlicher, weil diese Reihenfolge für den Cells-Befehl vorgegeben ist.
Bezogen auf das obige Beispiel liefert uns die Variable adr(2, 3) den Wert Hauptstraße 56, die Variable adr(1, 5) den Wert Musterstadt und die Variable adr(3, 2) den Wert Peters.
Dabei bin ich davon ausgegangen, das die Spaltenüberschriften nicht mit berücksichtigt werden.
Nun kann man es sicher schon erahnen: die dritte Dimension wären bei diesem Beispiel die Tabellenbätter. Die Syntax lautet dann adr(a, b, c), wobei c in diesem Fall für das Tabellenblatt steht.
Weiterhin unterscheidet man verschiedene Datentypen. Darüber wird der zulässige Wertebereich der Variable festgelegt. Verzichtet man auf diese Deklaration, wird die Voreinstellung (Variant) angewendet. Besser ist es aber, einen Typ zu deklarieren. Das sieht zum Beispiel so aus:
Dim bFrg As Boolean
Dim byVar As Byte
Dim cCurr As Currency
Dim dtDatum As Date
Dim doWert As Double
Dim iZahl As Integer
Dim lZeile As Long
Dim oTeBo As Object
Dim sWert As Single
Dim sText As String
Dim vWeArr As Variant
|
A | B | C | D | |
1 | Datentyp | Bemerkung | Speicherbedarf | Wertebereich |
2 | Boolean | 2 Bytes | True oder False | |
3 | Byte | 1 Byte | 0 bis 255 | |
4 | Currency | (skalierte Ganzzahl) | 8 Bytes | -922.337.203.685.477,5808 bis 922.337.203.685.477,5807 |
5 | Date | 8 Bytes | 1. Januar 100 bis 31. Dezember 9999. | |
6 | Decimal | Anmerkung:&xnbsp;&xnbsp;&xnbsp;Der Datentyp Decimal kann nur mit einem Wert vom Typ Variant benutzt werden, d.h., Sie können keine Variable als Decimal deklarieren. Mit der CDec-Funktion können Sie jedoch einen Wert vom Typ Variant erstellen, dessen Untertyp Decimal ist. | 14 Bytes | +/-79.228.162.514.264.337.593.543.950.335 ohne Dezimalzeichen;+/-7,9228162514264337593543950335 mit 28 Nachkommastellen; die kleinste Zahl ungleich Null ist+/-0,0000000000000000000000000001. |
7 | Double | (Gleitkommazahl mit doppelter Genauigkeit) | 8 Bytes | -1,79769313486231E308 bis -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte. |
8 | Integer | Ganzzahl | 2 Bytes | -32.768 bis 32.767 |
9 | Long | (lange Ganzzahl) | 4 Bytes | -2.147.483.648 bis 2.147.483.647 |
10 | Object | 4 Bytes | Beliebiger Verweis auf ein Objekt vom Typ Object. | |
11 | Single | (Gleitkommazahl mit einfacher Genauigkeit) | 4 Bytes | -3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte. |
12 | String | (variable Länge) | 10 Bytes plus Zeichenfolgenlänge | 0 bis ca. 2 Milliarden. |
13 | String | (feste Länge) | Zeichenfolgenlänge | 1 bis ca. 65.400 |
14 | Variant | (mit Zahlen) | 16 Bytes | Numerische Werte im Bereich des Datentyps Double. |
15 | Variant | (mit Zeichen) | 22 Bytes plus Zeichenfolgenlänge | Wie bei String mit variabler Länge. |