Déclare le nom, les arguments et le code qui forment le corps d'une procédure Function.
Syntaxe
Function name [(arglist)] [statements] [name=expression] [Exit Function] [statements] [name=expression] End Function
Arguments :
name : nom de la fonction. Respecte les conventions de dénomination de variable standard.
arglist : liste des variables représentant les arguments qui sont transmis à la procédure Function lors de son appel. S'il existe plusieurs variables, elles doivent être séparées par des virgules.
La syntaxe de l'argument arglist est composée comme suit :
[ByVal | ByRef] varname[( )]
Arguments arglist :
ByVal : indique que l'argument est transmis par une valeur.
ByRef : indique que l'argument est transmis par une référence.
varname : nom de la variable représentant l'argument. Respecte les conventions de dénomination de variable standard.
statements : groupe d'instructions à exécuter dans le corps de la procédure Function.
expression : valeur renvoyée de la fonction.
Remarques
Si aucune instruction Public ou Private n'est explicitement spécifiée, les procédures Function sont publiques par défaut, c'est-à-dire qu'elles sont visibles par toutes les autres procédures de votre script. La valeur des variables locales dans une fonction n'est pas conservée entre les différents appels de la procédure.
Vous ne pouvez pas définir de procédure Function dans une autre procédure (par exemple, Sub ou Property Get).
L'instruction Exit Function entraîne la sortie immédiate d'une procédure Function. L'exécution du programme se poursuit avec l'instruction qui suit celle qui a appelé la procédure Function. Un nombre illimité d'instructions Exit Function peuvent apparaître n'importe où dans une procédure Function.
Comme une procédure Sub, une procédure Function est une procédure distincte qui peut accepter des arguments, exécuter une série d'instructions et modifier les valeurs de ses arguments. Cependant, contrairement à une procédure Sub, vous pouvez utiliser une procédure Function du côté droit d'une expression, comme n'importe quelle fonction intrinsèque (par exemple Sqr, Mid ou Chr), lorsque vous voulez utiliser la valeur renvoyée par la fonction.
Vous appelez une procédure Function en utilisant le nom de la fonction, suivi de la liste des arguments entre parenthèses, dans une expression. Reportez-vous à l'instruction Call pour obtenir des informations spécifiques sur l'appel des procédures Function.
Pour renvoyer une valeur à partir d'une fonction, affectez la valeur au nom de la fonction. Un nombre illimté de ces affectations peuvent apparaître n'importe où dans la procédure. Si aucune valeur n'est affectée au nom, la procédure ne renvoie rien.
L'exemple suivant illustre l'affectation d'une valeur renvoyée à une fonction nommée FindValue. Dans ce cas, False est affecté au nom pour indiquer qu'aucune valeur n'a été trouvée.
Exemple 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)
Les variables utilisées dans les procédures Function se divisent en deux catégories : celles qui sont explicitement déclarées dans la procédure et celles qui ne le sont pas. Les variables explicitement déclarées dans une procédure sont toujours propres à la procédure. Les variables utilisées mais pas explicitement déclarées sont également propres à la procédure, sauf si elles sont explicitement déclarées au niveau le plus élevé en dehors de la procédure.