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 Database
Option Explicit

'Klassenmodul "Person"

Private m_strName As String
Private m_intAlter As Integer

Public 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 If
End Property

Public Property Get Name() As String
    Name = m_strName
End Property

Public Property Let Alter(ByVal NewAge As Integer)
    If NewAge <> m_intAlter Then
        m_intAlter = NewAge
        RaiseEvent AgeChanged(NewAge)
    End If
End Property

Public Property Get Alter() As Integer
    Alter = m_intAlter
End Property

Public Function Begrüßen() As String
    Begrüßen = "Hallo, mein Name ist " & m_strName & " und ich bin " & m_intAlter & " Jahre alt."
End Function

Public 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 Person

Set objPerson = New Person

objPerson.Name = "Max Mustermann"
objPerson.Alter = 35

MsgBox 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.

Categories:

Tags:

Comments are closed