Beim Programmieren benötigt man meistens etliche Variablen, über die man dann den Überblick zu behalten muss: Hat man für einen bestimmten Zweck schon eine Variable erstellt? Und wenn, wie hieß sie noch? Da ist es übersichtlicher, gleich am Codeanfang alle Variablen zu deklarieren. Das ist in VBA eigentlich nicht notwendig - VBA versucht oft, dem Programmierer mittels Standardeinstellungen zu helfen. Das mag tippfaulen Menschen erst einmal gefallen - aber abgesehen von schlechterer Übersichtlichkeit, Wartbarkeit und Performance kann es so sogar vorkommen, dass man vollkommen unerwartete Ergebnisse erhält. Daher sollte man sich nicht auf Standardeinstellungen verlassen, sondern klare Angaben machen. Man kann (und sollte) VBA sogar dazu zwingen.
Option Explicit
Sub HalloDu() Dim meinText meinText = "Hallo Welt" Debug.Print meinText End Sub
Hier findet sich im Deklarationsbereich die Zeile
Option Explicit
. Damit ist der Programmierer
gezwungen, jede Variable vor deren Benutzung zu deklarieren. Das ist ein unbedingt
zu empfehlender guter Programmierstil. Daher sollte man diese Zeile in jedem Modul
einfügen. Der Visual Basic Editor bietet die Möglichkeit, das zu automatisieren:
Im Menü kann man unter Extras/Optionen
verschiedene Einstellungen
vornehmen, die im Allgemeinen so schon in Ordnung sind - allerdings ist in neueren
Versionen leider kein Häkchen bei „Variablendeklaration erforderlich“ gesetzt.
Falls er fehlt: Gleich nachholen, und beim nächsten neuen Modul wird automatisch
Option Explicit
eingefügt.
Die eigentliche Deklaration der Variable erfolgt schließlich mit
Dim
. Üblicherweise schreibt man alle
Variablendeklarationen an den Anfang einer Prozedur. So kann man sie überall
innerhalb der Prozedur nutzen und behält auch in komplexen Situationen den
Überblick über die vorhandenen Variablen. Und um sogar den Abschnitt mit den
Variablendeklarationen selbst noch zu strukturieren, kann man auch mehrere
Variablen in einer Zeile deklarieren.
Option Explicit
Sub HalloDu() Dim i, j Dim meinText meinText = "Hallo Welt" Debug.Print meinText End Sub