Microsoft® Visual Basic® Scripting Edition
Function-Anweisung
Sprachreferenz 

 

Siehe auch


Beschreibung
Deklariert den Namen, die Argumente und den Code für den Rumpf einer Function-Prozedur.

Syntax
[Public | Private] Function Name [(ArgListe)]
    [Anweisungen]
    [Name = Ausdruck]
    [Exit Function ]
    [Anweisungen]
    [Name = Ausdruck]
End Function

Die Syntax der Function-Anweisung besteht aus folgenden Teilen:

Teil Beschreibung
Public Gibt an, daß auf die Function-Prozedur von allen anderen Prozeduren in allen Skripten zugegriffen werden kann.
Private Gibt an, daß auf die Function-Prozedur nur von Prozeduren zugegriffen werden kann, die im gleichen Skript deklariert wurden.
Name Name der Function-Prozedur gemäß den Standardkonventionen für Namen von Variablen.
Argliste Variablenliste mit den Argumenten, die an die Function-Prozedur beim Aufruf übergeben werden. Mehrere Variable werden durch Kommas voneinander getrennt.
Anweisungen Eine beliebige Gruppe von Anweisungen im Rumpf einer Function-Prozedur, die ausgeführt werden sollen.
Ausdruck Rückgabewert der Funktion.

Das Argument Argliste verwendet die folgende Syntax und die folgenden Komponenten:

[ByVal | ByRef] VarName[( )]

Teil Beschreibung
ByVal Das Argument wird als Wert übergeben.
ByRef Zeigt an, daß das Argument nach Verweis übergeben wird.
VarName Name der Variablen, die das Argument darstellt, gemäß den Standardkonventionen für den Namen von Variablen.

Anmerkungen

Wenn nicht ausdrücklich als Public oder Private angegeben, sind Function-Prozeduren standardmässig öffentlich, d.h. sie sind für alle anderen Prozeduren in Ihrem Skript sichtbar. Der Wert von lokalen Variablen in einer Funktion bleibt zwischen den Aufrufen der Prozedur nicht erhalten.

Jeder ausführbare Code muß in Prozeduren liegen. Sie können keine Function-Prozedur innerhalb einer anderen Function- oder Sub-Prozedur deklarieren.

Die Exit Function-Anweisung führt zur unmittelbaren Beendigung der Function-Prozedur. Die Programmausführung wird mit der Anweisung fortgesetzt, die auf die Anweisung folgt, welche die Function-Prozedur aufgerufen hat. In einer Function-Prozedur kann eine beliebige Anzahl von Exit Funktion-Anweisungen an beliebiger Stelle vorkommen.

Ähnlich wie eine Sub-Prozedur ist eine Function-Prozedur eine separate Prozedur, die Argumente übernehmen, eine Reihe von Anweisungen ausführen und die Werte ihrer Argumente ändern kann. Im Unterschied zu einer Sub-Prozedur können Sie eine Function-Prozedur auf der rechten Seite eines Ausdrucks auf gleiche Weise verwenden wie eine integrierte Funktion, wie z.B. Sqr, Cos oder Chr, wenn Sie den von der Funktion zurückgegebenen Wert verwenden wollen.

Sie rufen eine Function-Prozedur in einem Ausdruck über den Funktionsnamen auf, gefolgt von der Argumentliste in Klammern. Unter Call-Anweisung finden Sie spezifische Informationen über das Aufrufen von Function-Prozeduren.


Vorsicht  Function-Prozeduren können rekursiv sein; das bedeutet, daß sie sich selbst aufrufen können, um eine anstehende Aufgabe zu erledigen. Rekursion kann allerdings zu einem Stapel-Überlauf führen.

Um aus einer Funktion einen Wert zurückzugeben, weisen Sie den Wert dem Funktionsnamen zu. Innerhalb der Prozedur kann eine beliebige Anzahl solcher Zuweisungen an beliebiger Stelle auftreten. Wenn Name kein Wert zugewiesen wird, gibt die Prozedur einen Standardwert zurück: eine numerische Funktion gibt 0 zurück, und eine Zeichenfolgenfunktion gibt eine Zeichenfolge der Länge 0 ("") zurück. Eine Funktion, die einen Objektverweis zurückgibt, liefert als Standardwert Nothing, falls Name kein Objektverweis zugewiesen wurde (durch Set) innerhalb der Function.

Das folgende Beispiel zeigt, wie einer Funktion namens BinarySuche ein Rückgabewert zugewiesen wird. In diesem Fall wird dem Namen der Wert False zugewiesen, um anzuzeigen, daß der gesuchte Wert nicht gefunden wurde.


Funktion  BinarySuche(. . .)
  . . .
  ' Wert nicht gefunden. Gib den Wert False zurück.
  If lower > upper Then
    BinarySuche = False 
    Exit Function  
  End If
  . . .
End Function 
Es gibt zwei Arten von Variablen, die in Function-Prozeduren verwendet werden: solche, die innerhalb der Prozedur explizit deklariert werden, und andere. Variable, die explizit in einer Prozedur deklariert werden (mit Dim oder etwas Gleichwertigem) sind immer Prozedurlokal. Variable, die verwendet, aber nicht explizit innerhalb einer Prozedur deklariert werden, sind ebenfalls lokal, es sei denn, sie sind auf einer höheren Ebene außerhalb der Prozedur explizit deklariert worden.


Vorsicht  Eine Prozedur kann eine Variable verwenden, die nicht explizit innerhalb der Prozedur deklariert wurde, aber es kann ein Namenskonflikt auftreten, wenn irgend etwas, das Sie auf Skript-Ebene definiert haben, denselben Namen hat. Wenn Ihre Prozedur auf eine undeklarierte Variable Bezug nimmt, die denselben Namen hat wie eine andere Prozedur, Konstante oder Variable, dann wird angenommen, daß Ihre Prozedur sich auf diesen Namen auf Skriptebene bezieht. Deklarieren Sie Variable explizit, um diese Art von Konflikt zu verneiden. Sie können eine Option Explicit-Anweisung verwenden, um die explizite Deklaration von Variablen zu erzwingen.


Vorsicht  VBScript ordnet u.U. arithmetische Ausdrücke anders an, um die interne Effizienz zu erhöhen. Vermeiden Sie die Verwendung von Function-Prozeduren in einem arithmetische Ausdruck, wenn die Funktion den Wert von Variablen im selben Ausdruck verändert.