Methoden

Mit Objekten kann man verschiedene Dinge machen. Das, was ein Objekt kann, nennt man eine Methode. Im VBA-Code werden Methoden - genau wie die weiteren Elemente einer Klasse, die wir später noch kennenlernen werden - einfach mit einem Punkt an die Objektbezeichnung angehängt. IntelliSense zeigt in seiner Auflistung vor einer Methode das MethodeMethoden-Symbol an.

Wir hatten ja gerade eben eine Klasse namens „Auto“ erstellt. Nun fügen wir dieser Klasse eine Methode hinzu. Autos können bekanntlich hupen, also soll hupen eine Methode aller Auto-Objekte werden. Außerdem könnte man der Methode hupen noch eine Zahl übergeben, die angibt, wie lange gehupt wird. Da es aufwendig wäre, mit VBA tatsächlich Geräusche zu machen, geben wir in unserem einfachen Beispiel einfach nur die Dauer als Zahl im Direktfenster aus.

BMW.hupen(3)
3

Wie schon beschrieben, gehört die Definition für hupen in das Klassenmodul Auto. Befinden sich in einem Klassenmodul öffentliche Sub- oder Function-Prozeduren, handelt es sich dabei um die Methoden der Klasse. Im Allgemeinen ist übrigens Function sinnvoller, weil man einen Rückgabewert definieren kann, der z. B. angibt, ob die Prozedur erfolgreich ausgeführt wurde.

Fügen wir also in unser Klassenmodul Auto folgende Prozedur ein:

Auto
Public Function hupen(Optional Sekunden As Integer = 2) As Boolean
    MsgBox Sekunden
    hupen = True
End Function

Damit haben wir eine Methode erstellt, die True zurückgibt, wenn erfolgreich gehupt wurde. Die Hupe funktioniert also.

Zurück in einem Standardmodul können wir die Methode wie folgt aufrufen:

Modul1
Public Sub Autos()
Dim Familienkutsche As New Auto

Familienkutsche.hupen
Familienkutsche.hupen 1

End Sub

IntelliSense zeigt uns nach dem Punkt hinter Familienkutsche in der Auswahlliste Methodehupen an. Ob wir den Rückgabewert der Methode im weiteren Code tatsächlich auswerten wollen, ist uns natürlich freigestellt.