VBA-Programmierung mit Klassen
Eine erste Klasse erstellen: Eine erste Mini-Klasse
Eine erste Mini-Klasse
Auf dieser Seite
Mit Bild
Nachdem Sie im VBA-Editor das Menü Einfügen/Klassenmodul aufgerufen haben, wählen Sie in dieser Klasse1 aus der oberen linken DropDown-Liste Class und aus der rechten die beiden Prozeduren Initialize und Terminate.
Mit Bild
Die Auswahl der Klassen-Ereignisse
Mit Bild
Sie erhalten damit die beiden benötigten Prozedur-Rümpfe. Ergänzen Sie den Code:
Mit Bild
Option Explicit Const m_cstrModulName = "Klasse1" Private Sub Class_Initialize() MsgBox "Da bin ich!", vbExclamation, m_cstrModulName End Sub Private Sub Class_Terminate() MsgBox "...und tschüß!", vbExclamation, m_cstrModulName End Sub Sub SagHallo() MsgBox "Hallo, ich heiße '" & m_cstrModulName & "'.", vbExclamation, m_cstrModulName End Sub Function MeinName() As String MeinName = m_cstrModulName End Function
Mit Bild
Dabei ist der Modulname der Einfachheit halber in einer Modul-öffentlichen Variablen gespeichert, damit er bei Bedarf zentral geändert werden kann. Solche Variablen werden entsprechend der Ungarischen Notation mit m_... am Anfang gekennzeichnet, damit sie von lokalen oder Datei-öffentlichen (mit Präfix p_... für Public) Variablen unterschieden werden können.
Mit Bild
Legen Sie nun ein normales Modul modTest an und rufen Sie diese Klasse auf. Das geschieht ähnlich wie bei einer Variablen durch die Dim-Anweisung, allerdings steht hier vor dem Datentyp Klasse1 (nämlich dem Namen, unter dem das Klassenmodul gespeichert ist) das Schlüsselwort New:
Mit Bild
Sub AufrufEinerKlasseEinfach() Dim Test As New Klasse1 Test.SagHallo End Sub
Mit Bild
Die Meldungen beweisen, dass der Zugriff auf die Klasse funktioniert.
Mit Bild
Die wesentliche Neuigkeit gegenüber normalen Variablen ist das Schlüsselwort New. Es weist Windows an, eine Kopie des Klassenmoduls im Speicher anzulegen. Erst mit dieser Kopie kann Ihr Code arbeiten. Die von Ihnen programmierte Klasse ist sozusagen der Stempel, von dem Ihr Code beliebig viele Stempelabdrücke anlegen kann. Jeder Stempelabdruck ist autark, er "weiß" also nichts von den anderen.
Nach dem "Stempeln" mit New können Sie alle öffentlichen Prozeduren, Funktionen oder Properties dieser Klasse benutzen, wenn Sie die jeweils deklarierte Variable (hier also Test) voranstellen.