Inhaltsverzeichnis

Prozeduren

Allgemein

Als Prozeduren bezeichnet man eine benannte Folge von Anweisungen, die über ihren Namen aufgerufen und als Einheit ausgeführt werden.

Prozeduren können Argumente entgegennehmen, wobei die Angabe der Argumente durch Beistrich getrennt angeführt wird. Als Excel-User kennen Sie sicher die Funktion Summe, die als Argument meist einen Zellbereich entgegennimmt, die Werte aufsummiert und das Ergebnis als Funktionswert zurückliefert.

In VBA gibt es zwei Arten von Prozeduren:

  • Sub-Prozedur: liefert keinen Wert zurück.
  • Function-Prozedur: liefert einen Wert als Funktionswert zurück.

Sie können auch den Geltungsbereich (Scope) der Prozeduren angeben:

  • Public: die Prozedur kann von überall aus aufgerufen werden.
  • Private: die Prozedur ist nur innerhalb eines Moduls aufrufbar.

Wenn Sie eine Prozedur ohne Angabe von Public oder Private implementieren, ist die Prozedur standardmässsig Public.

Um eine Prozedur vorzeitig zu beenden, verwenden Sie die Anweisung Exit Sub für eine Sub-Prozedur und die Anweisung Exit Function für eine Function-Prozedur.

Die folgenden Codebeispiele verwenden die Anweisung Debug.Print um in das Ausgabefenster zu schreiben. Blenden Sie das Ausgabefenster im VBA-Editor über den Menübefehl Ansicht - Direktfenster ein.

Sub-Prozedur

Eine Sub-Prozedur arbeitet beim Aufruf die in der Prozedur enthaltenen Anweisungen ab. Sie liefert keinen Wert als Funktionswert zurück.

'Sub-Prozedur: Ausgabe einer Addition im Direktfenster
Sub MeineMethode1()
  Dim zahl1 As Integer
  Dim zahl2 As Integer
  zahl1 = 5
  zahl2 = 10
  Debug.Print zahl1 + zahl2
End Sub

Um die Prozedur MeineMethode1 auszuführen, geben Sie die Prozedurbezeichnung an. Beachten Sie, dass beim Aufruf einer Sub-Prozedur kein rundes Klammernpaar nach der Prozedurbezeichnung angegeben wird.

'Dreimaliger Aufruf von MeineMethode1
Public Sub Test1()
  MeineMethode1
  MeineMethode1
  MeineMethode1
End Sub

Im Ausgabefenster sollte nach Ausführung der Prozedur Test1 drei Mal die Zahl 15 aufscheinen.

Die Prozedur MeineMethode1 ist nicht sehr flexibel, da diese immer die beiden Zahlen 5 und 10 addiert und ausgibt. Dies lässt sich verbessern, indem der Prozedur die beiden Zahlen als Argumente übergeben werden. Die Angabe der Argumente (inkl. des Datentyps) erfolgt durch Beistrich getrennt. Innerhalb der Prozedur können die Argumente wie lokale Variablen verwendet werden.

'Sub-Prozedur: Ausgabe einer Addition im Direktfenster mit Argumenten
Sub MeineMethode2(zahl1 As Integer, zahl2 As Integer)
  Debug.Print zahl1 + zahl2
End Sub

Um die Prozedur MeineMethode2 auszuführen, geben Sie die Prozedurbezeichnung und die benötigten Argumente an. Beachten Sie, dass beim Aufruf einer Sub-Prozedur die Argumente nicht in einem runden Klammernpaar angegeben werden.

'Dreimaliger Aufruf von MeineMethode2 mit unterschiedlichen Werten
Public Sub Test2()
  MeineMethode2 5, 10
  MeineMethode2 8, 20
  MeineMethode2 30, 4
End Sub

Im Ausgabefenster sollte nach Ausführung der Prozedur Test2 die Zahlen 15, 28 und 34 aufscheinen.

Sie können Argumente auch als optional kennzeichnen und beim Aufruf der Prozedur dieses Argument angeben oder nicht. Beachten Sie, dass nach einem optionalen Argument keine weiteren verpflichtenden Argumente angegeben werden dürfen.

'Sub-Prozedur: Ausgabe einer Addition im Direktfenster mit einem optionalen Argument
Public Sub MeineMethode3(zahl1 As Integer, zahl2 As Integer, Optional zahl3 As Integer)
  Debug.Print zahl1 + zahl2 + zahl3
End Sub

Im folgenden Beispiel wird beim ersten und dritten Aufruf der Prozedur MeineMethode3 das dritte Argument nicht angegeben. In diesen Fällen nimmt das Argument zahl3 den Standardwert des Datentyps (in diesem Fall also die Zahl 0) an.

'Dreimaliger Aufruf von MeineMethode3 mit einem optionalen Argument
Public Sub Test3()
  MeineMethode3 5, 10
  MeineMethode3 10, 20, 3
  MeineMethode3 30, 1
End Sub

Im Ausgabefenster sollte nach Ausführung der Prozedur Test3 die Zahlen 15, 33 und 31 aufscheinen.

Function-Prozedur

Eine Function-Prozedur funktioniert gleich wie eine Sub-Prozedur, liefert aber einen Wert als Funktionswert zurück. Dies geschieht, in dem Sie innerhalb der Function-Prozedur den Funktionsnamen auf den Funktionswert (Rückgabewert) setzen.

Weiters geben Sie bei der Implementierung an, von welchem Datentyp der Funktionswert ist.

'Function-Prozedur: liefert Ergebnis einer Addition als Funktionswert vom Datentyp Integer
Public Function MeineMethode4(zahl1 As Integer, zahl2 As Integer) As Integer
  MeineMethode4 = zahl1 + zahl2
End Function

Um die Prozedur MeineMethode4 auszuführen, geben Sie die Prozedurbezeichnung und die benötigten Argumente an. Beachten Sie, dass beim Aufruf einer Function-Prozedur die Argumente in einem runden Klammernpaar angegeben werden.

Im folgenden Beispiel wird der Funktionswert von MeineMethode4 in einer Variablen wert abgelegt und dann im Ausgabefenster ausgegeben.

'Dreimaliger Aufruf von MeineMethode4 mit unterschiedlichen Werten
Public Sub Test4a()
  Dim wert As Integer
  wert = MeineMethode4(5, 10)
  Debug.Print wert
  wert = MeineMethode4(8, 20)
  Debug.Print wert
  wert = MeineMethode4(30, 4)
  Debug.Print wert
End Sub

Im Ausgabefenster sollte nach Ausführung der Prozedur Test4a die Zahlen 15, 28 und 34 aufscheinen.

Sie können einen Funktionsaufruf auch gleich als Teil einer weiteren Anweisung verwenden, da der Funktionsaufruf ja "stellvertretend" für den Funktionswert steht.

Das folgende Beispiel veranschaulicht diesen Umstand:

'Funktionsaufruf als Teil einer Anweisung
Public Sub Test4b()
  Dim wert As Integer
  wert = MeineMethode4(5, 10) * 2
  Debug.Print wert
  wert = MeineMethode4(8, 20) + MeineMethode4(3, 5)
  Debug.Print wert
  Debug.Print MeineMethode4(30, 4) / 2
End Sub

Im Ausgabefenster sollte nach Ausführung der Prozedur Test4b die Zahlen 30, 36 und 17 aufscheinen.

Bezüglich der Angabe von optionalen Argumenten gilt das bei der Beschreibung der Sub-Prozedur gesagte.

Benutzerdefinierte Funktionen

Sie können Function-Prozeduren, die als Public definiert sind auch in der Excel Oberfläche einsetzen.

Sie haben folgende Function-Prozedur implementiert.

'Function-Prozedur: liefert Ergebnis einer Addition als Funktionswert vom Datentyp Integer
Public Function MeineMethode5(zahl1 As Integer, zahl2 As Integer) As Integer
  MeineMethode5 = zahl1 + zahl2
End Function

Wechseln Sie in die Excel-Oberfläche und geben Sie in einer Zelle folgende Anweisung ein:

=MeineMethode5(5; 10)

Beachten Sie, dass Sie in der Excel-Oberfläche die Argumente durch Strichpunk (Semicolon) trennen. Als Ergebnis sollte die Zahl 15 angezeigt werden.

Tragen Sie in die Zellen A1 und A2 die Zahlen 5 und 10 ein. Geben Sie in der Zelle A3 folgende Anweisung ein:

=MeineMethode5(A1; A2)

Als Ergebnis sollte die Zahl 15 angezeigt werden. Eine Änderung der Werte in A1 und A2 bewirkt jeweils eine Neuberechnung des Ergebnisses in A3.

Im Funktionsassistenten sollte die Funktion MeineMethode5 auch in der Kategorie Benutzerdefiniert aufscheinen.

Download Codebeispiele

Die gezeigten Codebeispiele können Sie als xlsm-Datei herunterladen.

Seitenanfang   Inhaltsverzeichnis