Einführung in die Definition von Modulkonstanten in VBA im Rahmen der Lehre des Programmierens mit der Programmiersprache VBA. (VBA, Const, Public, Private, Konstante, Konstanten, Modul, Module), Lektion, Seite 721510
http://www.purl.org/stefan_ram/pub/vba_modulkonstanten_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Modulkonstanten in VBA

Am Anfang einer Konstantendeklaration kann der Modifizierer "Public" oder der Modifizierer "Private" verwendet werden, um festzulegen, daß der die Konstanten in allen Modulen bzw. nur in ihrem Modul sichtbar sein sollen.

ConstDeclaration 〉 ::=
( "Public" | "Private" ) "Const" 〈Bezeichner 〉 ["As" 〈Typ 〉] "=" 〈Ausdruck 〉 〈Vers-Ende 〉.

Modulkonstanten

Ein Modul kann neben Unterprogrammen und Funktionen auch Modulkonstanten  enthalten. Damit kann beispielsweise ein Modul mit mathematischen Konstanten realisiert werden. Die Konstantendeklaration ist in diesem Fall noch das Schlüsselwort "public" vorangestellt, damit sie von anderen Modulen aus sichtbar ist. Soll eine Konstante nur innerhalb eines Moduls verwendet werden, so wäre das Schlüsselwort "Private" anstelle des Schlüsselworts "Public" zu verwenden.

In dem Modul "MathValue" werden beispielsweise zwei Konstanten definiert, die dann von Klienten der Klasse verwendet werden kann. Für das folgende Beispiel wird davon ausgegangen, daß dieses Modul in dem Projekt "tut" (von tutorial  [Lehrtext]) enthalten ist. (Das Projekt "tut" muß den Verweisen des Projektes von "Modul1" hinzugefügt werden, damit die Bezeichner des Projekts "tut" erreichbar sind.)

tut.MathValue
Public Const pi As Double = 3.1415926535897932384626433832795028841972 
Public Const e As Double = 2.7182818284590452353602874713526624977572

Modul1
Sub Beispiel() 
Debug.Print "Der Umfang eines Kreises mit dem Radius 9.8 ist "; 
Debug.Print Format( 2 * tut.MathValue.pi * 9.8, "#.00" ); 
Debug.Print "." 
End Sub

Direktbereich
Der Umfang eines Kreises mit dem Radius 9.8 ist 61,58.

Man kann das Modul "tut.MathValue" auch als einen Verbund  (eine Zusammenfassung) zweier Konstanten ansehen. Solch ein Verbund von Daten wird auch als eine Aggregat  bezeichnet.

Private Sichtbarkeit

Wenn eine Modulkonstante nur von Unterprogrammen und Funktionen ihres Moduls verwendet werden soll, dann sollte sie als „privat“ gekennzeichnet werden, um so ihre Sichtbarkeit auf ihr Modul einzuschränken.

Das Klasse "tut.PhysValue" veröffentlicht über sein Schnittstelle aus zwei Funktionen den Zahlenwert der Lichtgeschwindigkeit in Meter pro Sekunde  bzw. in Kilometer pro Stunde. Um die für die Berechnung nötigen Werte nicht in den beiden Methodendeklarationen wiederholen zu müssen, werden Konstanten mit den benötigten Werten in der Klasse definiert. Diese Konstanten sollen aber nicht nach außen sichtbar werden, damit sie bei Bedarf jederzeit verändert werden können, ohne daß dies die Klienten stört. Daher werden die Konstanten als Modul-intern gekennzeichnet.

tut.PhysValue
'' Gelegentlich benoetigte physikalische Werte
Private Const m As Double = 1 '' Das Meter 
Private Const s As Double = 1 '' Die Sekunde  
Private Const km As Double = 1000 * m '' Der Kilometer 
Private Const h As Double = 60 * 60 * s '' Die Stunde 
Private Const c As Double = 299792458 * m / s '' Die Lichtgeschw.
Public Function c_ms() As Double 
c_ms = c /( m / s )  
End Function
Public Function c_kmh() As Double 
c_kmh = c /( km / h )  
End Function

Modul1
Sub Beispiel1() 
Debug.Print "Die Lichtgeschwindigkeit beträgt "; 
Debug.Print Format( tut.PhysValue.c_ms(), "#.00" ); 
Debug.Print " m/s oder "; 
Debug.Print Format( tut.PhysValue.c_kmh(), "#.00" ); 
Debug.Print " km/h." 
End Sub

Direktbereich
Die Lichtgeschwindigkeit beträgt 299792458,00 m/s oder 1079252848,80 km/h.

Es ist vom Unterprogramm "Beispiel" aus nun nicht möglich, auf die privaten Modulkonstanten des Moduls "tut.PhysValue" zuzugreifen, nur die beiden Modulfunktionen können aufgerufen werden.

Die Angabe "Private" kann vor der Deklaration einer Modulkonstante auch entfallen, da dies (d.h. die private Sichtbarkeit) die Vorgabe ist, die dann für die Sichtbarkeit übernommen wird.

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz