Gelegentlich steht bei einer Variablen von vornherein fest, dass sie ihren
Wert niemals ändern soll. In Visual Basic für Applikationen kann man dazu
Konstanten
deklarieren.
Option Explicit
Sub Mathe() Const Pi = 3.1415926535897932384626433832795 Const MwSt = 0.19 Const Nutzername = "Hans Wurst" Debug.Print Pi * 2 End Sub
Konstanten werden mit Const
deklariert
und bekommen gleich in der Deklaration ihren festen Wert zugewiesen. Außerdem
kann man Konstanten zwar einen Datentyp zuweisen - aber wenn man das
nicht macht, bekommt die Konstante automatisch einen Datentyp, der am besten für
den Wert geeignet ist. Darin unterscheidet sich eine Konstante von einer Variable:
Eine Variable ohne Angabe eines Datentyps bekommt den Typ Variant
zugewiesen.
Manchmal braucht man eine Reihe zusammenhängender Konstanten. VBA bietet dafür
Aufzählungen, auch Enumerationen
genannt, an. Aufzählungen können nur im Deklarationsbereich, nicht in einer Prozedur
deklariert werden, und können nur Zahlen vom Typ Long
aufnehmen. Man kann auch darauf verzichten, diesen Konstanten Werte zuzuweisen;
dann bekommt die erste Konstante den Wert „0“, die zweite „1“ usw. Eine Aufzählung
kann anschließend genau wie ein Datentyp genutzt werden:
Option Explicit Enum Farbe Karo = 9 Herz = 10 Pik = 11 Kreuz = 12 Grand = 24 End Enum
Sub Skat() Dim Spiel As Farbe Spiel = Herz End Sub
Praktisch an Aufzählungen ist nicht nur, dass man sich die entsprechenden Werte nicht mehr merken muss, sondern auch, dass IntelliSense beim Tippen die Konstanten der Aufzählung anbietet.
In VBA selbst sind intern schon einige Auflistungen enthalten, wie z. B. VbTriState oder VbDayOfWeek. Diese Konstanten sind für interne Funktionen von VBA gedacht, können aber natürlich nach Belieben auch anderweitig eingesetzt werden. Die meisten Applikationen bringen außerdem zahlreiche weitere eigene Auflistungen mit.
Eher der Vollständigkeit halber seien an dieser Stelle noch die
benutzerdefinierten Datentypen
erwähnt. Zusätzlich zu den in VBA eingebauten
Datentypen kann man mit
Type
darüber hinaus sogar eigene Datentypen
definieren. Dafür gibt es aber in der Praxis nur in höchst seltenen Ausnahmefällen
Bedarf.
Eine Grafik besteht beispielsweise aus Pixeln, und jeder Pixel hat eine Koordinate, bestehend aus einem X- und einem Y-Wert. Beide Werte können zusammen in einer einzigen Variablen gespeichert werden:
Type Koordinate x As Long y As Long End Type
Function Pixel() As String Dim p As Koordinate p.x = 800 p.y = 600 Pixel = p.x & "*" & p.y End Function
Auch Type
-Anweisungen müssen
im Deklarationsbereich eines Moduls erfolgen.