Variablendeklaration

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