web-dev-qa-db-fra.com

Quelle est la différence entre les modificateurs Dim, Global, Public et Private en tant que modificateurs d'accès au champ modulaire?

Dans VB6/VBA, vous pouvez déclarer des variables de niveau module en dehors d'une méthode spécifique Sub ou Function. J'ai utilisé Private et Public auparavant dans les modules internes et je les comprends comme ceci:

  • Public - visible par tout le code à l'intérieur du module et tout le code à l'extérieur du module, le rendant essentiellement global.
  • Private - visible uniquement pour le code à l'intérieur du module.

J'ai remarqué que vous pouvez utiliser Dim et Global comme modificateurs de variables modulaires. Est-ce que Dim et Global sont différents de Private et Public, respectivement, lorsqu'ils sont utilisés comme modificateurs d'accès sur des champs modulaires? Si oui, en quoi sont-ils différents?

65
Ben McCormack

Dim et Private fonctionnent de la même manière, bien que la convention habituelle soit d'utiliser Private au niveau du module et Dim au niveau de la sous-fonction/fonction. Public et Global sont presque identiques dans leur fonction. Cependant, Global ne peut être utilisé que dans des modules standard, alors que Public peut être utilisé dans tous les contextes (modules , classes, contrôles, formulaires, etc.) Global provient d'anciennes versions de VB et a probablement été conservé pour des raisons de compatibilité ascendante, mais a été complètement remplacé par Public. .

90
Joe Jordan