In den bisherigen Beispielen des Tutorials
haben wir mit Sub
-Prozeduren gearbeitet. Ein weiterer wichtiger Prozedurtyp
ist Function
. Eine Function
-Prozedur unterscheidet sich
kaum von einer Sub
. Allerdings kann eine Function
auch
einen Rückgabewert haben.
Function Ich() Ich = "Hallo Ich" End Function
Hier taucht der Name der Prozedur in ihrem „Körper“ auf. Dem Namen wird ein Wert zugewiesen, als wenn es eine Variable wäre. Das legt den Rückgabewert der Function fest. Im Direktfenster erfolgt der Aufruf wie folgt:
Debug.Print Ich Hallo Ich
Mit dem Rückgabewert kann man nach Belieben weiterarbeiten. Im obigen Beispiel
geben wir ihn z. B. mit Debug.Print
aus. Genauso gut hätte die
Function auch von einer anderen Prozedur aufgerufen werden, und dort der Rückgabewert
in einer Variablen gespeichert werden können. Eine selbst geschriebene Function
verhält sich also genau wie eine in VBA integrierte
Funktion. Zum Vergleich schreiben wir ins Direktfenster:
Debug.Print Date
Damit haben wir die VBA-interne Funktion
Date()
aufgerufen. Und genau
wie VBA-interne Funktionen, so kann man auch selbst programmierte Funktionen in der
Applikation nutzen. Wenn wir also die obige Function in Microsoft
Excel geschrieben haben, können wir sie einfach in einem Tabellenblatt nutzen.
Hier sehen wir als Beispiel die obige Funktion in der Zelle A1. Solche Funktionen
nennt man „benutzerdefinierte Funktion“ oder neudeutsch Userdefined Function
(UDF).
Mappe1.xlsm | ||
---|---|---|
A1 ƒx =Ich() | ||
A | B | |
1 | Hallo Ich | |
2 | ||
3 |
Der Rückgabewert einer Function hat, genau wie eine Variable, einen
Datentyp, der stets definiert werden
sollte. Ansonsten hätte die Funktion den (selten empfehlenswerten) Datentyp
Variant
. Der Datentyp wird hinter den Klammern angegeben. Im Gegensatz
dazu hat eine Sub natürlich keinen Datentyp - mangels Rückgabewert.
Function eineZahl() As Currency eineZahl = 14.5 End Function