VBA (Visual Basic for Applications) ist eine objektorientierte Programmiersprache, aber sie hat im Vergleich zu modernen objektorientierten Programmiersprachen wie Java oder C# einige Einschränkungen.
In VBA können Sie Klassen, Objekte, Eigenschaften, Methoden und Ereignisse definieren, die typische Merkmale einer objektorientierten Programmierung sind. VBA unterstützt auch Vererbung, Polymorphismus und Kapselung, die grundlegende Konzepte der objektorientierten Programmierung sind.
Allerdings hat VBA einige Einschränkungen, die es schwieriger machen, komplexe objektorientierte Anwendungen zu erstellen. Zum Beispiel hat VBA keine Unterstützung für abstrakte Klassen, Schnittstellen oder Vererbung von mehreren Klassen (Mehrfachvererbung). VBA unterstützt auch keine strengen Typüberprüfungen, was zu Fehlern führen kann, wenn die Typen von Objekten zur Laufzeit nicht korrekt überprüft werden.
Insgesamt kann man sagen, dass VBA eine objektorientierte Programmiersprache ist, aber sie hat ihre Grenzen und ist möglicherweise nicht die beste Wahl für komplexe objektorientierte Anwendungen.
Beispiel Klasse mit VBA
Hier ist ein grundlegendes Gerüst für eine neue Klasse in Access VBA mit typischen Methoden und Ereignissen:
Option Compare DatabaseOption Explicit'Klassenmodul "Person"Private m_strName As StringPrivate m_intAlter As IntegerPublic Event NameChanged(ByVal NewName As String)Public Event AgeChanged(ByVal NewAge As Integer)Public Property Let Name(ByVal NewName As String) If NewName <> m_strName Then m_strName = NewName RaiseEvent NameChanged(NewName) End IfEnd PropertyPublic Property Get Name() As String Name = m_strNameEnd PropertyPublic Property Let Alter(ByVal NewAge As Integer) If NewAge <> m_intAlter Then m_intAlter = NewAge RaiseEvent AgeChanged(NewAge) End IfEnd PropertyPublic Property Get Alter() As Integer Alter = m_intAlterEnd PropertyPublic Function Begrüßen() As String Begrüßen = "Hallo, mein Name ist " & m_strName & " und ich bin " & m_intAlter & " Jahre alt."End FunctionPublic Sub Geburtstag() m_intAlter = m_intAlter + 1 RaiseEvent AgeChanged(m_intAlter)End Sub
In diesem Beispiel definiert die Klasse „Person“ die Eigenschaften „Name“ und „Alter“, sowie die Methoden „Begrüßen“ und „Geburtstag“. Es gibt auch zwei Ereignisse, „NameChanged“ und „AgeChanged“, die ausgelöst werden, wenn sich der Name oder das Alter der Person ändern.
Im echten Leben würde ich natürlich keine Umlaute oder Sonderzeichen wie ß in Variablendeklarationen einsetzen. Ggfs. noch Set(), Class_Initialize() und Class_Terminate() ergänzen.
Sönke Schäfer
Um diese Klasse zu verwenden, können Sie eine Instanz der Klasse in Ihrem Code erstellen und auf die Eigenschaften und Methoden zugreifen, wie im folgenden Beispiel gezeigt:
Dim objPerson As PersonSet objPerson = New PersonobjPerson.Name = "Max Mustermann"objPerson.Alter = 35MsgBox objPerson.Begrüßen()objPerson.Geburtstag()MsgBox "Herzlichen Glückwunsch zum " & objPerson.Alter & ". Geburtstag, " & objPerson.Name & "!"
Dieses Beispiel erstellt eine neue Person und weist ihr einen Namen und ein Alter zu. Dann wird die Begrüßungsmethode aufgerufen, um eine Nachricht mit dem Namen und dem Alter der Person anzuzeigen. Schließlich wird die Geburtstagsmethode aufgerufen, um das Alter der Person zu erhöhen und eine Glückwunschnachricht anzuzeigen.