Sichtbarkeit von Prozeduren

Ebenso wie bei Variablen, kann man auch bei Prozeduren deren Sichtbarkeit festlegen. Wenn VBA-Projekte umfangreicher werden, verwendet man in der Regel auch mehrere Module. Meistens soll dann nur eine einzige oder nur sehr wenige Prozeduren eines Moduls von außen aufgerufen werden. Die übrigen Prozeduren des Moduls sind diesen Prozeduren untergeordnet, d. h; sie werden nur von diesen genutzt. Daher ist es sinnvoll und guter Programmierstil, dafür zu sorgen, dass solche untergeordneten Prozeduren auch nur innerhalb des Moduls sichtbar sind. Wie bei Variablen, erfolgt das auch bei Prozeduren mit Private bzw. Public.

Modul1 (Code) Modul2 (Code)
Option Explicit


Public Sub
Datenverwaltung() Loesche End Sub
Private Sub
Loesche() ' Hier werden Daten gelöscht Debug.Print "Daten gelöscht" End Sub
Option Explicit


Public Sub
Aufruf1() Datenverwaltung 'Das klappt End Sub
Public Sub
Aufruf2() Loesche 'Das klappt nicht! End Sub

In diesem Beispiel befinden sich im Modul1 zwei Prozeduren: Datenverwaltung wurde als Public definiert, Loesche dagegen als Private. Datenverwaltung kann also Loesche aufrufen, weil sich beide Prozeduren im gleichen Modul befinden. Anders verhält es sich bei den Prozeduren in Modul2: Aufruf1 ruft Datenverwaltung problemlos auf, aber wenn Aufruf2 gestartet wird, kommt es zu einer Fehlermeldung, weil aus Modul2 heraus Loesche nicht gefunden werden kann.

Gibt man weder Public noch Private an, ist Public der Standardwert. Aber auch hier gilt, wie immer: Man sollte sich nicht auf Standardwerte verlassen, sondern explizit angeben, was man will.