VBA-Programmierung mit Klassen

Eine erste Klasse erstellen: Eine erste Mini-Klasse

∅ 4 / 1 Bewertungen

Eine erste Mini-Klasse

Auf dieser Seite

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.

56885_klassen01.png

Die Auswahl der Klassen-Ereignisse

Sie erhalten damit die beiden benötigten Prozedur-Rümpfe. Ergänzen Sie den Code:

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

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.

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:

Sub AufrufEinerKlasseEinfach()
	Dim Test As New Klasse1

	Test.SagHallo
End Sub
56887_klassen03.png

Die Meldungen beweisen, dass der Zugriff auf die Klasse funktioniert.

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.