Function-Anweisung

Deklariert den Namen, die Argumente und den Code, die den Hauptteil einer Function-Prozedur bilden.

Syntax

Function name [(arglist)]
   [statements]
   [name=expression]
   [Exit Function] 
   [statements]
   [name=expression]
End Function

Argumente:

  • Name: Der Name der Function-Prozedur. Er folgt den Standardkonventionen zur Benennung von Variablen.

  • Arglist: Liste der Variablen, die Argumente darstellen und beim Aufrufen an die Function-Prozedur übergeben werden. Mehrere Variablen werden durch Kommas getrennt.

    Das Argument arglist weist folgende Syntax und Elemente auf:

    [ByVal | ByRef] varname[( )]

    Arglist-Argumente:

    • ByVal: Gibt an, dass das Argument als Wert übergeben wird.

    • ByRef: Gibt an, dass das Argument als Verweis übergeben wird.

    • Varname: Name der Variablen, die das Argument darstellt. Er folgt den Standardkonventionen zur Benennung von Variablen.

  • Anweisungen: Beliebige Gruppe von Anweisungen, die im Hauptteil der Function-Prozedur ausgeführt werden sollen.

  • Ausdruck: Gibt den Wert der Funktion zurück.

Anmerkungen

Wenn keine explizite Angabe mit "Public" oder "Private" erfolgt, sind Function-Prozeduren standardmäßig öffentlich (Public), d.h. sie sind für alle anderen Prozeduren in Ihrem Skript sichtbar. Der Wert lokaler Variablen in einer Function-Prozedur wird zwischen den Aufrufen der Prozedur nicht beibehalten.

Sie können keine Function-Prozedur in einer anderen Prozedur (z.B. Sub oder Property Get) definieren.

Die Exit Function-Anweisung bewirkt, dass eine Function-Prozedur sofort beendet wird. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, in der die Function-Prozedur aufgerufen wurde. Beliebig viele Exit Function-Anweisungen können überall in einer Function-Prozedur vorkommen.

Wie eine Sub-Prozedur ist eine Function-Prozedur eine separate Prozedur, die Argumente annehmen, eine Reihe von Anweisungen ausführen und die Werte ihrer Argumente ändern kann. Im Gegensatz zur Sub-Prozedur können Sie eine Function-Prozedur jedoch auf der rechten Seite eines Ausdrucks genauso verwenden wie jede intrinsische Funktion (z.B. Sqr, Mid oder Chr), wenn Sie den von der Funktion zurückgegebenen Wert verwenden möchten.

Sie rufen eine Function-Prozedur mit dem Funktionsnamen, gefolgt von der Argumentliste in Klammern, in einem Ausdruck auf. Weitere Informationen zum Aufrufen von Function-Prozeduren finden Sie im Abschnitt zur Call-Anweisung.

Um einen Wert aus einer Funktion zurückzugeben, weisen Sie den Wert dem Funktionsnamen zu. Beliebig viele solcher Zuweisungen können überall in der Prozedur vorkommen. Wenn dem Namen kein Wert zugewiesen ist, gibt die Prozedur nichts zurück.

Das folgende Beispiel zeigt, wie Sie einer Funktion namens FindValue einen Rückgabewert zuweisen. In diesem Fall wird "False" dem Namen zugewiesen, um anzugeben, dass ein Wert nicht gefunden wurde.

Beispiel 1:

Function FindValue(val)
    Dim notFound
    notFound = True
    'Business Logic
    'val not found. Return a val of False.
    If notFound Then
        FindValue = False   
        Exit Function 
    End If
    ' Business Logic
End Function

'Usage:-
val = FindValue(8)

In Function-Prozeduren verwendete Variablen lassen sich in zwei Kategorien einteilen: Variablen, die explizit in der Prozedur deklariert werden, und Variablen, die nicht deklariert werden. Variablen, die explizit in einer Prozedur deklariert werden, sind immer lokal für die Prozedur. Variablen, die in einer Prozedur verwendet, aber nicht explizit deklariert werden, sind ebenfalls lokal, es sei denn, sie werden explizit auf der höchsten Ebene außerhalb der Prozedur deklariert.