Share via


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

Procédures dans Visual Basic

Paramètres et arguments d'une procédure

Passage d'arguments par valeur et par référence

Paramètres facultatifs

Tableaux de paramètres

Référence

Optional (Visual Basic)

ParamArray