Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Tutorials

Option 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
 Peter Haserodt
  • Formelhilfe
  • Makroentwicklung
  • VBA-Programmierung
  • + + + + + + + + +
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