Reichweite von Variablen


Globale Variable

Verwenden Sie Public innerhalb von Modul1.bas

Die Public-Anweisung wird auf Modulebene verwendet, um öffentliche Variablen zu deklarieren und den dafür nötigen Speicher zu reservieren. Auf Variablen, die mit der Anweisung Public deklariert wurden, kann von allen Prozeduren in allen Modulen aus allen Projekten zugegriffen werden. Unerwünschte Nebeneffekte können dann auftreten, wenn ein Programmteil auf eine solche Variable zugreift (und verändert), wenn es das nicht soll. Um dies zu verhindern, sollte die Reichweite der betroffenen Variable auf Modulebene oder nur auf Prozedurebene (lokale Variable) eingeschränkt werden.


Variable auf Modulebene

Verwenden Sie Dim innerhalb des Allgemeinen Deklarationsabschnitts eines Moduls.

Variablen, die mit Dim auf Modulebene deklariert wurden, stehen allen Prozeduren des Moduls zur Verfügung. Auf Prozedurebene deklarierte Variablen stehen nur innerhalb der umgebenden Prozedur zur Verfügung. Allen Prozeduren in anderen Modulen wird der Zugriff auf diese Variable verweigert. Wird eine Variable in einigen Prozeduren eines Moduls verwendet, aber nicht außerhalb dieses Moduls, dann sollte die Reichweite dieser Variable auf Modulebene begrenzt werden.


Lokale Variable

Verwenden Sie Dim innerhalb der betreffenden Prozedur

Variablen, die mit Dim auf Prozedurebene deklariert wurden, stehen nur innerhalb der umgebenden Prozedur zur Verfügung. Alle anderen Prozeduren (desselben oder anderer Module) können auf diese Variable nicht zugreifen. Lokale Reichweite einer Variable sollte dort verwendet werden, wo die Variable einmal gebraucht wird, und anschließend nicht mehr. Zum Beispiel sollten Zählervariablen in For-Schleifen wenn möglich als lokale Variablen deklariert werden.

Anmerkung: Wenn eine Prozedur abgeschlossen wird, wird jegliche lokale Variable vernichtet und der dafür bereitgestellte Arbeitsspeicherplatz anderen Zwecken zur Verfügung gestellt. Dies bedeutet, daß ein Variableninhalt, der von einer zu einer anderen Prozedur übergeben werden soll, nicht in einer als lokal deklarierten Variable stehen darf. Eine Lösung hierfür wäre die Verwendung einer statischen Variable (weitere Details). Auf diese Variablen wird nach wie vor nur in jener Prozedur zugegriffen werden können, in der sie deklariert worden sind, aber der Inhalt wird beim Abschluß der Prozedur nicht zerstört.



Hauptseite