Passage des arguments par position et par nom
Mise à jour : novembre 2007
Lorsque vous appelez une procédure Sub ou Function, vous pouvez passer des arguments par position (dans l'ordre où ils apparaissent dans la définition de la procédure) ou par nom, sans tenir compte de la position.
Lorsque vous passez un argument par nom, vous devez spécifier le nom déclaré de l'argument suivi de deux-points et d'un signe égal (:=), puis ajouter la valeur de l'argument. L'ordre des arguments nommés n'a pas d'importance.
Par exemple, la procédure Sub suivante accepte trois arguments :
Sub studentInfo(ByVal name As String, _
Optional ByVal age As Short = 0, _
Optional ByVal birth As Date = #1/1/2000#)
Debug.WriteLine("Name = " & name & _
"; age = " & CStr(age) & _
"; birth date = " & CStr(birth))
End Sub
Lorsque vous appelez cette procédure, vous pouvez fournir les arguments par position, par nom ou les deux.
Passage des arguments par position
Vous pouvez appeler la procédure studentInfo avec des arguments passés par position et séparés par des virgules, comme le montre l'exemple suivant :
Call studentInfo("Mary", 19, #9/21/1981#)
Si vous omettez un argument facultatif dans une liste d'arguments positionnels, vous devez marquer son emplacement à l'aide d'une virgule. L'exemple suivant appelle studentInfo sans l'argument age :
Call studentInfo("Mary", , #9/21/1981#)
Passage des arguments par nom
Vous pouvez également appeler studentInfo avec des arguments passés par nom et séparés par des virgules, comme le montre l'exemple suivant :
Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")
Mélange d'arguments par position et par nom
Vous pouvez fournir des arguments à la fois par position et par nom dans un seul appel de procédure, comme le montre l'exemple suivant :
Call studentInfo("Mary", birth:=#9/21/1981#)
Dans l'exemple précédent, aucune virgule supplémentaire n'est nécessaire pour marquer l'emplacement de l'argument age ayant été omis, car birth est passé par nom.
Lorsque vous fournissez des arguments à la fois par position et par nom, les arguments positionnels doivent tous être placés en premier. Une fois que vous avez fourni un argument par nom, les arguments restants doivent tous être fournis par nom.
Spécification d'arguments facultatifs par nom
Le fait de passer des arguments par nom est très utile lorsque vous appelez une procédure qui possède plusieurs arguments facultatifs. Si vous fournissez des arguments par nom, vous n'êtes pas obligé d'utiliser des virgules successives pour signaler l'absence d'arguments positionnels. Le fait de passer des arguments par nom facilite également le suivi des arguments qui sont passés ou de ceux qui sont omis.
Restrictions sur les spécifications d'arguments par nom
Vous ne pouvez pas passer d'arguments par nom pour éviter d'entrer des arguments requis. Vous ne pouvez omettre que les arguments facultatifs.
Vous ne pouvez pas passer un tableau de paramètres par nom. En effet, lorsque vous appelez la procédure, vous devez fournir un nombre indéfini d'arguments séparés par des virgules pour le tableau de paramètres, or, le compilateur ne peut pas associer plusieurs arguments à un seul nom.
Voir aussi
Tâches
Comment : passer des arguments à une procédure
Comment : passer des arguments à une procédure par nom
Concepts
Paramètres et arguments d'une procédure
Passage d'arguments par valeur et par référence