Excel VBA Portée variable
Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA ne fait pas exception. VBA a également des spécificateurs de portée. Ces spécificateurs d’étendue peuvent être utilisés pour définir la visibilité / l’étendue d’une variable dans Excel VBA.
Dans Excel VBA, nous avons trois types de spécificateurs de portée:
-
Niveau de procédure. Privé – Niveau module. Public – Niveau projet === Portée de la variable de niveau procédure VBA Les variables qui sont déclarées dans un sous-programme ne sont accessibles que dans cette procédure / fonction. Ils ont une portée au niveau de la procédure. Ils sont généralement déclarés avec le mot-clé Dim. Si le module est option implicite, alors la variable peut ne pas avoir été déclarée, juste utilisée directement.
Dans l’exemple ci-dessous, nous avons un test de portée de sous-programme qui a les variables x et y. Lorsque nous exécutons le premier sous-programme, il fonctionne parfaitement et imprime la somme de X et Y
Option Explicit Sub scopeTest() Dim x, y As Integer ' Procedure level variable in VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum() x = 5 y = 7 Debug.Print x + y End Sub
Mais lorsque vous exécutez la somme du sous-programme, une erreur indique que la variable n’est pas déclarée. Pourquoi? Parce que X et Y sont privés pour la procédure scopeTest et le sous-programme sum n’y a pas accès.
Par conséquent, le sous-marin rencontre une erreur.
Variable privée VBA – Portée au niveau du module Lorsque vous voulez déclarer une variable qui doit être accédée dans tout le module, alors vous déclarez cette variable comme privée en haut du module, avant tout sous-programme ou fonction.
Les variables déclarées avant tout sous-programme, dans le module, sont par défaut Private. Même si vous les déclarez avec le mot-clé Dim. Mais pour être précis, il est sage d’utiliser le mot clé Private.
Les deux procédures ci-dessous se trouvent dans le même module, module 1.
Option Explicit 'Module level variable in VBA. Both variables x and y are private to this module. and 'can be accessed from any sub or function within this module. Dim x As Integer Private y As Integer Sub scopeTest() 'This can be accessed from any module in the project x = 2 y = 3 Debug.Print x + y End Sub Private Sub sum() ' This can't be accessed from other modules x = 5 y = 7 Debug.Print x + y End Sub
Les deux fonctions ci-dessus fonctionneront parfaitement car les variables x et y sont les variables privées de ce module.
Important: Les dernières valeurs stockées dans x et y sont conservées jusque dans tout le module. Si nous exécutons d’abord le sous scopeTest et que nous n’initialisons pas les valeurs de x et y dans la sous-somme et que nous l’exécutons, alors la valeur initiale de x et y restera inchangée.
Le sous-programme ci-dessous est défini dans un module séparé, le module 2. Lorsque j’essaie d’accéder à la variable à partir d’un autre module, la procédure (ou fonction) VBA génère une erreur.
Mais si j’essaie d’appeler la somme du sous-programme du module 1 du module 2, cela fonctionne parfaitement. Pour rendre votre fonction et vos sous-programmes privés au module, utilisez le mot-clé Private avant le sous et la fonction.
Note: – Les variables déclarées avant tout sous-programme ou fonction, dans un module sont privées du module par défaut. Vous pouvez utiliser le mot clé privé. Mais les fonctions et sous-routines sont publiques par défaut et sont accessibles par n’importe quel module d’un projet. Pour rendre les fonctions et les sous-programmes privés au module, vous devez utiliser le mot-clé Private. === Variables publiques – Portée au niveau du projet Comme nous l’avons appris dans les exemples ci-dessus, la fonction et les sous-programmes sont par défaut publics et sont accessibles depuis n’importe quel module mais les variables ne le sont pas. Pour rendre une variable accessible depuis n’importe quel module dans Excel VBA, nous utilisons le mot-clé Public. * Pour déclarer une variable publique dans un projet, vous les avez déclarées en haut du module, avant toute fonction ou sous-routine avec le mot-clé public. Le code ci-dessous est écrit dans le module 1.
Option Explicit 'Project level variable in VBA. Public x As Integer Public y As Integer Public Sub scopeTest() 'This can be accessed from any module in the project x = 2 y = 3 End Sub Private Sub sum() ' This can't be accessed from other modules x = 5 y = 7 Debug.Print x + y End Sub
Et ce sous-programme est dans un autre module, le module 2.
Option Explicit Sub mul() Call scopeTest 'Call sum ' it won't work as it is private to the module 1 Debug.Print x * y End Sub
Cette fois, il fonctionne parfaitement.
J’ai d’abord appelé le sous-programme scopeTest. Le scopeTest étant public, il est appelé. Il initialise les valeurs de x et y. Ensuite, nous multiplions x et y. Puisque le sous-programme scopeTest l’avait initialisé avec les valeurs 2 et 3, le résultat obtenu est 6.
Alors oui les gars, voici comment vous pouvez utiliser les spécificateurs d’étendue de variable dans Excel pour contrôler la visibilité des variables, des fonctions et des sous-programmes dans les projets Excel VBA.
J’ai essayé d’expliquer les spécificateurs d’accès de VBA de la manière la plus simple possible. J’espère que c’était explicatif. Si vous avez des doutes concernant cet article ou tout autre doute lié à VBA, demandez-moi dans la section commentaires ci-dessous. Je serai heureux d’être ici de votre part.
Articles liés:
link: / cells-ranges-rows-and-columns-in-vba-what-is-the-difference-between-byref-and-byval-arguments-vba-interview-question [ByRef and ByVal Arguments]
| Quand un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.
link: / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirmation-prompts-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation à l’aide de VBA dans Microsoft Excel]
| Depuis vous supprimez des feuilles en utilisant VBA, vous savez ce que vous faites. Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016]
| Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA] `La barre d’état d’Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches en utilisant VBA, vous désactivez souvent la mise à jour de l’écran afin de ne pas voir ce scintillement de l’écran `link: / general-topics-in-vba-turn-off-warning-messages- using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] `| Ce code désactive non seulement les alertes VBA, mais augmente également l’efficacité temporelle du code. Voyons comment.
Articles populaires:
lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité]
| Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.
lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel]
| C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher la valeur de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016]
| Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter une valeur spécifique.
La fonction Countif est indispensable pour préparer votre tableau de bord.
lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel]
| C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.