Table of contents
TOC
Réduire la table des matières
Développer la table des matières

Function, instruction

office 365 dev account|Dernière mise à jour: 04/10/2017
|
1 Contributeur

Déclare le nom, les arguments et le code d'une procédureFunction.

Syntaxe

[ Public |Private | Friend ] [ Static ] Functionname [ (arglist) ] [ Astype ]

[ statements ]

[ name=expression ]

[ Exit Function ]

[ statements ]

[ name=expression ]

End Function

La syntaxe de l'instruction Function est composée des éléments suivants :

ÉlémentDescription
PublicFacultatif. Indique que la procédure Function est accessible à toutes les autres procédures dans tous les modules. Si elle est utilisée dans un module contenant une Option Private, la procédure n'est pas disponible en dehors du projet.
PrivateFacultatif. Indique que la procédure Function est uniquement accessible aux autres procédures du module dans lequel elle est déclarée.
FriendFacultatif. Utilisé uniquement dans un module de classe. Indique que la procédure Function est visible dans l'ensemble du projet, mais qu'elle n'est pas visible par un contrôleur d'une instance d'un objet.
StaticFacultatif. Indique que les variables locales de la procédure Function sont conservées entre les appels. L'attribut Static n'affecte pas les variables déclarées en dehors de la procédure Function, même si elles sont utilisées dans la procédure.
nameObligatoire. Nom de la procédure Function; respecte les conventions d'affectation des noms de variables standard.
arglistFacultatif. Liste des variables représentant des arguments qui sont transmis à la procédure Function lorsqu'elle est appelée. Les variables sont séparées par des virgules.
typeFacultatif. Type de données de la valeur renvoyée par la procédure Function; peut être Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (actuellement non pris en charge), Date, String ou (excepté pour les longueurs fixes) Object, Variant ou tous les types définis par l'utilisateur.
statementsFacultatif. Tous les groupes d'instructions à exécuter dans la procédure Function.
expressionFacultatif. Valeur de retour de la procédure Function.

La syntaxe et les éléments de l'argument arglist sont les suivants :

[ Optional ] [ ByVal |ByRef ] [ ParamArray ] varname [ ( ) ] [ Astype ] [ =defaultvalue ]

ÉlémentDescription
OptionalFacultatif. Indique qu'un argument n'est pas obligatoire. Lorsqu'il est utilisé, tous les arguments suivants de arglist doivent également être facultatifs et déclarés avec le mot clé Optional. L'élément Optional ne peut pas être utilisé pour un argument si ParamArray est utilisé.
ByValFacultatif. Indique que l'argument est transmis par valeur.
ByRefFacultatif. Indique qu'un argument est transmis par référence. L'élément ByRef est la valeur par défaut dans Visual Basic.
ParamArrayFacultatif. Utilisé uniquement comme le dernier argument de arglist pour indiquer que l'argument final est un tableau Optional d'éléments de type Variant. Le mot clé ParamArray permet de fournir un nombre d'arguments arbitraire. Vous ne pouvez pas l'utiliser avec ByVal, ByRef ou Optional.
varnameObligatoire. Nom de la variable représentant l'argument ; respecte les conventions d'affectation des noms de variables standard.
typeFacultatif. Type de données de l'argument transmis à la procédure ; peut être Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (actuellement non pris en charge) Date, String (longueur de variable uniquement), Object, Variant ou un type d'objet spécifique. Si le paramètre n'a pas la valeur Optional, un type de données défini par l'utilisateur peut également être spécifié.
defaultvalueFacultatif. Toutes les constantes ou expressions de constante. Valide pour les paramètres Optional uniquement. Si le type est Object, une valeur par défaut explicite ne peut être que Nothing.

Notes

Si elles ne sont pas explicitement spécifiées avec Public, Private ou Friend, les procédures Function sont publiques par défaut. Si Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Le mot clé Friend ne peut être utilisé que dans des modules de classe. Toutefois, les procédures Friend peuvent être accessibles par les procédures de n'importe quel module d'un projet. Une procédure Friend ne s'affiche pas dans la bibliothèque de types de sa classe parente, et une procédure Friend ne peut pas non plus être liée tardivement.

Les procédures Function peuvent être récursives ; cela signifie qu'elles peuvent s'appeler elles-mêmes pour effectuer une tâche donnée. Toutefois, la récursivité peut entraîner le dépassement de la pile. En règle générale, le mot clé Static n'est pas utilisé avec les procédures Function récursives.

L'ensemble du code exécutable doit figurer dans des procédures. Vous ne pouvez pas définir une procédure Function à l'intérieur d'une autre procédure Function, Sub ou Property.

L'instruction Exit Function provoque 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. N'importe quel nombre d'instructions Exit Function peut figurer n'importe où dans une procédure Function.

À l'instar de la procédure Sub, la procédure Function est une procédure séparée qui peut prendre des arguments, exécuter une série d'instructions et modifier les valeurs de ses arguments. En revanche, contrairement à la procédure Sub, vous pouvez utiliser une procédure Function à droite d'une expression de la même manière qu'une fonction intrinsèque, telle que Sqr, Cos ou Chr, lorsque vous souhaitez utiliser la valeur renvoyée par la fonction.

Vous appelez une procédure Function avec le nom de la fonction, suivi de la liste d'arguments entre parenthèses, dans une expression. Consultez l'instruction Call pour obtenir des informations spécifiques sur l'appel des procédures Function.

Pour renvoyer une valeur d'une fonction, affectez la valeur au nom de la fonction. N'importe quel nombre de ce type d'affectation peut figurer n'importe où dans la procédure. Si aucune valeur n'est affectée au nom , la procédure renvoie une valeur par défaut : une fonction numérique renvoie 0, une fonction de chaîne renvoie une chaîne vide ("") et une fonction Variant renvoie Empty. Une fonction qui renvoie une référence d'objet renvoie Nothing si aucune référence d'objet n'est affectée au nom (à l'aide de Set ) au sein de la procédure Function.

L'exemple suivant montre comment affecter une valeur de retour à une fonction nommée. Dans le cas présent, False est affecté au nom pour indiquer qu'une valeur est introuvable.

Function BinarySearch(. . .) As Boolean
. . .
 ' Value not found. Return a value of False.
 If lower > upper Then
 BinarySearch = False
 Exit Function
 End If
. . .
End Function

Les variables utilisées dans les procédures Function se divisent en deux catégories : celles qui sont explicitement déclarées au sein de la procédure et celles qui ne le sont pas. Les variables explicitement déclarées dans une procédure (à l'aide de Dim ou de l'élément équivalent) sont toujours locales à la procédure. Les variables qui sont utilisées, mais ne sont pas explicitement déclarées dans une procédure sont également locales, sauf si elles sont explicitement déclarées à un niveau supérieur en dehors de la procédure.

Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans la procédure, mais un conflit de nom peut se produire si quoi que ce soit que vous avez déclaré au niveau du module porte le même nom. Si votre procédure se rapporte à une variable non déclarée qui porte le même nom qu'une autre procédure, constante ou variable, il est supposé que votre procédure se rapporte à ce nom situé au niveau du module. Déclarez explicitement les variables pour éviter ce type de conflit. Vous pouvez utiliser une instruction Option Explicit pour forcer la déclaration explicite des variable.

Visual Basic peut réorganiser les expressions arithmétiques pour améliorer les performances internes. Évitez d'utiliser une procédure Function dans une expression arithmétique lorsque la fonction change la valeur des variables dans la même expression.

Exemple

Cet exemple fait appel à l'instruction Function pour déclarer le nom, les arguments et le code qui constituent le corps d'une procédure Function. Le dernier exemple utilise des arguments Optional initialisés, codés en dur.

' The following user-defined function returns the square root of the
' argument passed to it.
Function CalculateSquareRoot(NumberArg As Double)As Double
 If NumberArg < 0 Then ' Evaluate argument.
 Exit Function ' Exit to calling procedure.
 Else
 CalculateSquareRoot = Sqr(NumberArg) ' Return square root.
 End If
End Function

L'utilisation du mot clé ParamArray permet à une fonction d'accepter un nombre variable d'arguments. Dans la définition suivante, il est transmis par valeur.

Function CalcSum(ByVal FirstArg As Integer,ParamArray OtherArgs())
Dim ReturnValue
' If the function is invoked as follows:
ReturnValue = CalcSum(4, 3 ,2 ,1)
' Local variables are assigned the following values: FirstArg = 4,
' OtherArgs(1) = 3, OtherArgs(2) = 2, and so on, assuming default
' lower bound for arrays = 1.

Les arguments Optional peuvent avoir des valeurs et des types par défaut différents de Variant.

' If a function's arguments are defined as follows:
Function MyFunc(MyStr As String,Optional MyArg1 As _ Integer = 5,Optional MyArg2 = "Dolly")
Dim RetVal
' The function can be invoked as follows:
RetVal = MyFunc("Hello", 2, "World") ' All 3 arguments supplied.
RetVal = MyFunc("Test", , 5) ' Second argument omitted.
' Arguments one and three using named-arguments.
RetVal = MyFunc(MyStr:="Hello ", MyArg1:=7)
© 2018 Microsoft