Die Option Explicit-Anweisung

Es gibt einige wenige Optionen in VBA-Projekten, die Sie modulabhängig festlegen können. Eine davon heißt “Option Explicit”. Diese Anweisung legt fest, dass in einem Modul keine Variablen verwendet werden dürfen, die nicht deklariert wurden. In diesem Artikel schauen wir uns an, wie sich das in der Praxis auswirkt, wie Sie sicherstellen können, dass “Option Explicit” immer automatisch hinzugefügt wird und dass viele Probleme in Softwareprojekten entstehen, weil Microsoft uns diese Option nicht automatisch bereitstellt.

Standardverhalten: Kein Option Explicit!

Wenn Sie bereits einmal ein Modul in einem VBA-Projekt einer Access-Anwendung angelegt haben, ist Ihnen die Anweisung Option Compare Database bekannt, die immer oben im Modul steht.

Wenn Sie Access frisch installiert haben oder wenn Sie noch keine Änderungen an den Optionen des VBA-Editors vorgenommen haben, sieht ein neues Modul immer wie in Bild 1 aus.

So sieht ein neues Modul standardmäßig aus.

Bild 1: So sieht ein neues Modul standardmäßig aus.

Die dort enthaltene Anweisung Option Compare Database legt fest, wie Vergleiche von Zeichenfolgen stattfinden, aber das ist ein anderes Thema.

Weniger Aufwand ohne Deklaration

Wenn Sie in einem solchem Modul VBA-Prozeduren programmieren, sind Sie richtig flexibel: Sie brauchen nämlich Variablen nicht zu deklarieren.

Sie können dann in einer Prozedur wie der folgenden einfach eine Variable namens strInput nutzen und sparen sich die Tipperei für die Variablendeklaration:

Option Compare Database
Public Sub OhneDeklaration()
     strInput = InputBox("Geben Sie einen Text ein.")
     MsgBox "Eingegebener Text:" & vbCrLf & strInput
End Sub

Die Prozedur funktioniert genauso, als wenn Sie die Variable strInput deklariert hätten.

Probleme ohne Option Explicit sind vorprogrammiert

Wenn Sie ohne Deklaration arbeiten, können verschiedene Probleme auftauchen:

  • Variablen erhalten standardmäßig den Datentyp Variant.
  • Schreibfehler in Variablen können zu logischen Fehlern führen.
  • Der Gültigkeitsbereich einer Variablen ist nicht definiert.

Wie sich diese Fehler auswirken, schauen wir uns in den folgenden Abschnitten an.

Nicht deklarierte Variablen erhalten den Datentyp Variant

Das Problem mit relativ geringen Auswirkungen ist, dass Variablen, die nicht deklariert werden, automatisch den Datentyp Variant erhalten.

Das ist übrigens auch der Fall, wenn Sie eine Variable ohne Angabe eines Datentyps deklarieren. Das Problem hierbei ist, dass der Datentyp Variant den meisten Speicherplatz benötigt.

Schreibfehler führen zu logischen Fehlern

Etwas problematischer ist die Tatsache, dass Schreibfehler bei Verwendung der Variablen nicht als Fehler gemeldet werden.

Wenn Sie also beispielsweise einmal die Schreibweise strInput und einmal die Schreibweise str_Input verwenden, könnte die Prozedur von oben wie folgt aussehen:

Public Sub OhneDeklaration()
     strInput = InputBox("Geben Sie einen Text ein.")
     MsgBox "Eingegebener Text:" & vbCrLf & str_Input
End Sub

Egal, welchen Text Sie nun in die InputBox eingeben, Sie erhalten immer eine leere Zeichenkette in der MsgBox – denn str_Input wird niemals mit einem Wert gefüllt.

Gültigkeitsbereich der Variablen ist nicht deklariert

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar