BEISPIEL
BEISPIEL
Kapitel 2: Programmieren mit VBA
Konstantendeklaration
Nachdem wir uns bereits mit der Variablendeklaration ausführlich auseinander gesetzt haben, ist die
Anwendung der Const-Anweisung schnell erklärt:
Die nachfolgenden Anweisungen definieren Konstanten:
Const Pi As Single = 3.14159
Public Const hinweis1 = "ACHTUNG!"
Private Const zahl1 As Integer = 7
Const hinweis2 = "VORSICHT!"
Const zahl2 As Double = 125.987
Wie Sie sehen, sind auch hier Typkennzeichen, Mehrfachanweisungen in einer Zeile sowie private und
öffentliche Deklarationen möglich. Standardmäßig gelten alle einfachen Const-Anweisungen als Private.
Auch für die Namensgebung sind die gleichen Konventionen wie bei Variablen anzuwenden.
Beachten Sie jedoch folgende Unterschiede:
Zulässige Typen sind Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String oder Variant.
Verwenden Sie für jede deklarierte Variable einen separaten As Type-Abschnitt. Falls Sie die Typangabe
weglassen, wird automatisch ein geeigneter Datentyp zugewiesen.
Es dürfte jedem klar sein, dass der Wert einer einmal definierten Konstante während des Programms
nicht verändert werden darf.
Nur in Standardmodulen (also nicht in Klassenmodulen, d.h. Form- bzw. Berichtsmodulen oder gar auf
Prozedurebene) können mit dem Schlüsselwort Public öffentliche Konstanten deklariert werden.
In VBA sind bereits viele »vorgefertigte« Konstanten integriert, die im Allgemeinen mit den Buchstaben vb
beginnen.
Das Textfeld wird rot eingefärbt (
vbRed
) und der Text umbrochen (
vbCrLf
).
Text0.BackColor = vbRed
Text0.Value = "Das ist die erste " & vbCrLf & "das ist die zweite Zeile!"
Gültigkeitsbereiche
Bevor Sie eine Variable/Konstante deklarieren (und ihr damit Speicherplatz zuweisen), sollten Sie sich Klar-
heit über deren Gültigkeitsbereich verschaffen. Dieser kann sich auf eine der folgenden Ebenen beziehen:
Aktuelle und andere Access-Datenbankapplikationen
Nur die aktuelle Access-Datenbankapplikation
Module
Prozeduren
Der Gültigkeitsbereich einer oberen Ebene umfasst auch die darunter liegenden Ebenen.
70
BEISPIEL
Private- und Public-Deklarationen
Diese Anweisungen können anstatt Dim verwendet werden, allerdings nur auf Modulebene, d.h., nicht
innerhalb von Funktionen/Prozeduren. In VBA unterscheiden wir zwischen zwei Arten von Modulen:
Klassenmodule (Formular-/Berichtsmodule, eigenständige Klassenmodule)
Standardmodule (Code-Module)
Sie erreichen das entsprechende Codefenster über das Symbol Code anzeigen der Befehlsgruppe Tools in der
Hauptregisterkarte Entwurf:
Abbildung 2.2 Über das Symbol Code anzeigen wird
das Codefenster (Visual Basic-Editor) geöffnet
Sämtlicher Code außerhalb von Funktionen/Prozeduren – und dazu gehört auch die Variablendeklaration
auf Modulebene – steht im Deklarationsabschnitt ganz am Anfang des Moduls. Wenn Sie hier die einfache
Dim-Anweisung verwenden, gelten die damit deklarierten Variablen nur innerhalb des Moduls, also nur für
die dort angesiedelten Funktionen/Prozeduren.
Abbildung 2.3 Deklarationen auf Modul- und auf
Prozedurebene im Codefenster
Wenn Sie möchten, dass die auf Modulebene deklarierten Variablen auch noch in allen anderen Modulen
der aktuellen Datenbank zur Verfügung stehen sollen, so müssen sie mit Public als »öffentlich« gekenn-
zeichnet werden.
Die auf Modulebene angewendete Anweisung:
Public a As Integer
deklariert eine öffentliche
Integer
-Variable
a
, die auch in allen anderen Modulen der Datenbank zur Ver-
fügung steht.
71
Datentypen, Variablen und Konstanten
HINWEIS
BEISPIEL
BEISPIEL
Kapitel 2: Programmieren mit VBA
Beachten Sie folgenden »feinen« Unterschied: Während Public-Variablen eines Formular-/ Berichtsmoduls
nur innerhalb von Funktionen/Prozeduren der aktuellen Datenbank verwendet werden können, darf auf
Public-Variablen eines Standardmoduls auch von anderen Datenbanken aus, die mit ihrer Deklaration auf
die aktuelle Datenbank verweisen, zugegriffen werden.
Eine noch effektivere Möglichkeit zur Definition globaler Variablen wurde unter Access 2007 mit der neuen
TempVars-Auflistung des Application-Objekts eingeführt (siehe »Eigenschaften und Methoden des Application-Objekts« in
Kapitel 5).
Eine mit Private gekennzeichnete Variablendeklaration weist ausdrücklich darauf hin, dass die Variable nur
innerhalb des Moduls zur Verfügung steht. Standardmäßig sind alle mit Dim auf Modulebene deklarierten
Variablen privat, sodass man hier auch ohne das Schlüsselwort Private auskommt.
Die auf Modulebene eingesetzte Anweisung:
Private a As Integer
ist äquivalent zur Anweisung:
Dim a As Integer
und deklariert eine
Integer
-Variable
a
, die nur den Funktionen/Prozeduren dieses Moduls zur Verfügung
steht.
Static-Anweisung
Neben den erwähnten Gültigkeitsbereichen (Prozedurebene, Modulebene, Datenbankebene) von Variablen
ist auch noch die Dauer, während der eine Variable ihren Wert beibehält, von Interesse.
Beim Aufruf einer Prozedur werden alle dort deklarierten Variablen initialisiert. Numerische Variablen
erhalten den Wert 0, eine Zeichenkette variabler Länge wird zur leeren Zeichenfolge (""), und eine Zeichen-
folge fester Länge wird zu dem Zeichen, das vom ASCII-Zeichencode als 0 bzw. Chr(0) interpretiert wird.
Variablen des Datentyps Variant werden mit Empty initialisiert. Das Gleiche trifft auch auf jedes Element
von Variablen eines benutzerdefinierten Datentyps (Type-Anweisung) zu.
Etwas anders verhält es sich bei Objektvariablen. Zwar reserviert Microsoft Access dafür Speicherplatz, die
Variable erhält aber erst dann einen Wert, wenn ihr mit Hilfe der Set-Anweisung eine Objektreferenz zuge-
wiesen wurde (siehe Kapitel 5).
Eine mit Dim auf Prozedurebene deklarierte Variable behält ihren Wert nur so lange, bis die Ausführung
der Prozedur beendet ist.
Platzieren Sie auf einem Formular eine Befehlsschaltfläche und hinterlegen Sie das
Click
-Ereignis mit folgen-
dem Code:
Sub Befehl0_Click()
Dim anzahl As Integer
72

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.