Autor: Peter Haserodt --- Aus Excel VBA - Gruppe:
TutorialsOption Private Module
Autor: Peter Haserodt - Erstellt: -- - Letzte Revision: --
Option Private Module - Publics ganz privat
Eine etwas widersprüchliche Aussage: Publics ganz privat.
Aber diesen Widerspruch wollen wir schnell auflösen.
Wenn ich in einem allgemeinen Modul eine Function oder eine Sub Public deklariere, steht diese mir Projektweit zur Verfügung.
Dies ist eine sinnvolle Sache, damit ich Code den ich in anderen Modulen immer wieder benötige, dorthin auslagern kann (zur Wiederverwendung). Sicherlich könnte ich dafür auch Klassenmodule verwenden aber meist ist dies für den Normalanwender eine zu komplizierte Sache.
Der Nachteil kann aber sein, dass ich meine Publics dann in Excel sehe, entweder in den Makros oder in den Benutzerdefinierten Funktionen.
Am Beispiel sieht man es am Besten (Erstellen Sie folgende 2 Module):
' **************************************************************
' Modul: Modul1 Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Public Sub NurSo()
MsgBox "Hallo"
End Sub
Public Function AuchNurSo() As Long
AuchNurSo = 123456
End Function
' **************************************************************
' Modul: Modul2 Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Private Sub TesteAuchNurSo()
MsgBox AuchNurSo
End Sub
Sie sehen, ich kann aus Modul2 meine öfffentliche Funktion aufrufen, wie gewünscht.
Wechseln Sie nun in die Excelumgebung und schauen einmal bei Makros nach, dort werden Sie das Makro NurSo finden und schauen Sie dann in Benutzerdefinierte Funktionen und siehe da, dort finden wir AuchNurSo.
Und genau dies kann unerwünscht sein.
Hier hilft Option Private Module.
Ändern Sie Modul1 wie folgt:
' **************************************************************
' Modul: Modul1 Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Option Private Module
Public Sub NurSo()
MsgBox "Hallo"
End Sub
Public Function AuchNurSo() As Long
AuchNurSo = 123456
End Function
Wenn Sie jetzt unsere Experimente von oben wiederholen werden Sie feststellen, dass ich im Modul2 meine Function immer noch ansprechen kann aber in der Excelumgebung sind beide verborgen.
Und dies wollten wir erreichen. Public ganz Privat
Denken Sie aber daran, dass Module in welchen Sie Prozeduren oder Funktionen haben, die Sie aus Excel ansprechen wollen, auf keinen Fall diese Option gesetzt haben dürfen.
Weitere Artikel der Gruppe: Tutorials Aus Excel VBA
Nach oben