Qu'est-ce que ByRef dans VBA?

Byref dans VBA signifie «By Reference». Avec l'aide de VBA Byref, nous pouvons cibler la valeur d'origine sans changer la valeur stockée dans les variables. En d'autres termes, nous transmettrons directement la valeur aux procédures Sub au lieu de suivre les méthodes habituelles de définition et d'affectation des valeurs aux variables.

Dans VBA ByRef, nous définissons la sous-procédure après avoir défini la règle pour ByRef. Cela pourrait être fait en dessous de la sous-procédure où nous voulons écrire le code. Dans ByRef, nous redéfinissons la variable utilisée dans la procédure Sub. Et cela ne fonctionne correctement que lorsque nous appelons la condition ByRef dans notre sous-procédure.

Comment utiliser la fonction ByRef dans Excel VBA?

Voici les différents exemples d'utilisation de la fonction ByRef dans Excel à l'aide du code VBA.

Vous pouvez télécharger ce modèle Excel VBA ByRef ici - Modèle Excel VBA ByRef

Excel VBA ByRef - Exemple # 1

Tout d'abord, apprenons comment insérer un ByRef dans VBA, pour cela, suivez les étapes ci-dessous. Dans cet exemple, nous verrons comment utiliser VBA ByRef pour un travail de soustraction mathématique simple. Pour cela, nous aurions besoin d'un module.

Étape 1: Alors, allez dans VBA et ouvrez un module à partir de l'option de menu Insérer comme indiqué ci-dessous.

Étape 2: dans le module nouvellement ouvert, écrivez la sous-catégorie de VBA ByRef comme indiqué ci-dessous.

Code:

 Sub VBA_ByRef1 () End Sub 

Étape 3: Maintenant, définissez une variable, disons que c'est un A comme entier.

Code:

 Sub VBA_ByRef1 () Dim A As Integer End Sub 

Étape 4: Donnez n'importe quel nombre à la variable A. Soit ce nombre soit 1000.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 End Sub 

Étape 5: Pour imprimer la valeur stockée dans la variable A, nous utiliserions Msgbox.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub 

Étape 6: Maintenant, nous compilons et exécutons ce code en cliquant sur le bouton Lecture comme indiqué ci-dessous. Nous obtiendrons une boîte de message avec la valeur stockée dans la variable A comme 1000 .

Maintenant, appliquez VBA ByRef, créez une autre sous-catégorie sous la première et affectez la variable définie de la première sous-catégorie à ByRef.

Étape 7: Par ceci, nous autoriserons la deuxième sous-catégorie à utiliser les valeurs stockées dans la variable A.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) End Sub 

Étape 8: Appelez à nouveau la variable A ici et soustrayez toute valeur de la variable A, pour obtenir la valeur de sortie dans la même variable. Soustrayons 100 de la valeur de la variable A pour obtenir un nombre mesurable.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Étape 9: Maintenant, si nous compilons chaque étape du code, nous remarquerons que lorsque le curseur atteindra la variable A, nous verrons qu'il ne contient que 0.

Étape 10: Lorsque le curseur atteindra End Sub, le résultat sera égal à 1000 dans la boîte de message.

Étape 11: C'est parce que nous n'avons pas attribué le ByRef à la première sous-catégorie. Maintenant, nous allons attribuer le nom de la sous-catégorie avant la fonction de boîte de message de la première sous-catégorie et voir ce qui se passera.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub 

Étape 12: Et maintenant, réexécutez le code complet. Nous verrons, la deuxième valeur qui est stockée dans la variable A comme 100 a été soustraite de la première valeur 1000. En conséquence, nous avons obtenu le message de sortie comme 900.

Étape 13: C'est le principal avantage de l'utilisation de ByRef. Nous n'avons pas besoin de définir plusieurs variables pour un seul travail. Une seule variable suffit pour effectuer l'ensemble de la tâche de différentes manières. Nous pouvons utiliser plus d'un ByRef dans un seul module.

Pour justifier ce que nous avons compris, ajoutons un autre ByRef dans le même module.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) End Sub 

Étape 14: Dans cette sous-catégorie, utilisons la multiplication.

Code:

 Sub VBA_ByRef1 () Dim A As Integer A = 1000 VBA_ByRef2 A MsgBox A End Sub Sub VBA_ByRef2 (ByRef A As Integer) A = A - 100 End Sub Sub VBA_ByRef3 (ByRef A As Integer) A = A * 2 End Sub 

Étape 15: compilez à nouveau et réexécutez le code. Nous verrons que la valeur obtenue à partir des étapes ci-dessus car 900 est maintenant multipliée par 2 pour obtenir 1800 en sortie.

Excel VBA ByRef - Exemple # 2

Dans cet exemple, nous verrons comment ByRef fonctionne avec d'autres types d'entiers.

Étape 1: ouvrez un module et écrivez la sous-catégorie comme indiqué ci-dessous.

Code:

 Sub VBA_ByRef4 () End Sub 

Étape 2: Définissez maintenant une variable A comme Double. Cela nous permettra d'utiliser des valeurs décimales.

Code:

 Sub VBA_ByRef4 () Dim A As Sub End Double 

Étape 3: attribuez une valeur décimale à la variable A.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 End Sub 

Étape 4: utilisez à nouveau la boîte de message pour voir la valeur stockée dans la variable A.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 MsgBox A End Sub 

Maintenant, si nous exécutons le code, nous obtiendrions 1, 23 en sortie.

Étape 5: d' une manière différente, nous utiliserons Function pour définir ByRef comme Double avec la variable A.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1.23 MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double End Function 

Étape 6: Ajoutez maintenant n'importe quel nombre à la variable A. Disons que c'est 10.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Étape 7: Et utilisez à nouveau cette fonction ByRef définie dans la première sous-catégorie. Ici, nous verrons deux boîtes de message, une pour la variable A et l'autre pour ByRef.

Code:

 Sub VBA_ByRef4 () Dim A As Double A = 1, 23 MsgBox AddTwo (A) MsgBox A End Sub Function AddTwo (ByRef A As Double) As Double A = A + 10 End Function 

Étape 8: La même chose se refléterait également dans la boîte de message.

Étape 9: Et lors de la prochaine exécution, la valeur ajoutée de 10 sera ajoutée à la valeur de variable d'origine de 1, 23, comme indiqué ci-dessous.

C'est ainsi que VBA Byref prend la référence de la valeur définie une fois, puis remplit la sortie selon la nouvelle condition.

Avantages et inconvénients de VBA ByRef

  • Lors de l'écriture de gros codes, cela permet de gagner beaucoup de temps en considérant la variable déjà définie, afin que sa valeur puisse être réutilisée encore et encore.
  • Nous n'avons pas à définir de nombreuses variables selon la formule que nous voulons appliquer.
  • Nous pouvons appliquer de nombreuses conditions ByRef dans un seul module sans même perturber le processus.
  • Nous ne pouvons pas utiliser VBA Byref dans une structure de code complexe.

Choses dont il faut se rappeler

  • Lors de l'examen de plusieurs conditions ByRef, la sortie sera basée sur la dernière sous-procédure ByRef que nous avons définie, mais elle prend également en compte toutes les conditions ByRef utilisées précédemment.
  • La sortie finale aura une sortie traitée séquentielle. Pas seulement le dernier.
  • Ce processus ne peut pas être effectué en enregistrant la macro.
  • Nous pouvons voir la valeur stockée à chaque étape de la variable en compilant le code.
  • Une fois cela fait, enregistrez le fichier Excel au format Excel activé par macro, afin que nous ne perdions pas de code à l'avenir.

Articles recommandés

Ceci est un guide de VBA ByRef. Ici, nous discutons comment utiliser la fonction ByRef dans Excel en utilisant le code VBA ainsi que des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Guide de la fonction UBA de VBA
  2. Fonction Excel OFFSET (exemple, utilisations)
  3. Créer un lien hypertexte dans Excel VBA
  4. Comment utiliser la poignée de remplissage Excel?

Catégorie: