Passage efficace des arguments
Tous les arguments sont passés à des procédurespar référence, sauf indication contraire. Ceci est efficace car tous les arguments passés par référence prennent autant de temps et la même quantité d’espace (4 octets) dans une procédure, quel que soit le type de données de l’argument.
Vous pouvez passer un argument par valeur si vous incluez le mot clé ByVal dans la déclaration de la procédure. Les arguments passés par valeur consomment de 2 à 16 octets dans la procédure, en fonction du type de données de l’argument. Le passage par valeur des types de données plus grands est un peu plus long. Pour cette raison, il est généralement préférable de ne pas passer par valeur les types de données String et Variant.
Le passage d’un argument par valeur entraîne la copie de la variable d’origine. Les modifications apportées à l’argument dans la procédure ne sont pas reflétées dans la variable d’origine. Par exemple :
Function Factorial(ByVal MyVar As Integer) ' Function declaration.
MyVar = MyVar - 1
If MyVar = 0 Then
Factorial = 1
Exit Function
End If
Factorial = Factorial(MyVar) * (MyVar + 1)
End Function
' Call Factorial with a variable N.
Sub Test()
N = 5
Debug.Print Factorial(N) ' Displays 120 (the factorial of 5)
Debug.Print N ' Displays 5.
End Sub
Sans l’inclusion de ByVal dans la déclaration de fonction, les instructions Print précédentes afficheraient 1 et 0. Cela est dû au fait que MyVar
fait alors référence à la variable S
, qui est réduite de 1 jusqu’à ce qu’elle soit égale à 0.
Étant donné que ByVal effectue une copie de l’argument, il vous permet de passer une variante à la fonction Factorial . Vous ne pouvez pas passer de valeur de type Variant par référence si la procédure qui déclare l’argument est d’un autre type de données.
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.