Quelle différence cela fait-il si l'on exécute un code VBA dans les “Feuilles”, dans “ThisWorkbook”, et dans “Modules”?
Quelle différence cela fait-il si l'on exécute un code VBA dans les "Feuilles" ("Feuil1", "Feuil2", etc.), dans "ThisWorkbook", et dans "Modules" ("Module1", etc)?
En d'autres termes, lequel doit être utilisé dans quels cas?
OriginalL'auteur Mehper C. Palavuzlar | 2012-10-18
Vous devez vous connecter pour publier un commentaire.
Un module est un ensemble de fonctions similaires et des sous-routines, généralement regroupés en fonction de leur fonctionnalité.
Dans un module de sous-programme/fonction,
Privé : les Fonctions et Sous-routines sont disponibles uniquement dans ce module.
Public : Ils peuvent être accessibles à partir de n'importe où, directement. (Un autre module, les différentes macro etc)
Il est de pratique courante pour stocker les fonctions de l'utilitaire dans les modules.
Option Private Module
, ce qui rend le module lui-même privé peut être ajouté au-dessus de tout module standard, mais n'est pas autorisé sur un module objet, comme ThisWorkbook, ou la feuille Sheet1, etc.ThisWorkbook est une private module de l'Objet Workbook.
Par exemple, Workbook_Open(), Workbook_Close() de la routine, de résider à l'intérieur de ce module. (Classeur de Référence de l'Objet)
De même, la Feuil1, Feuil2 sont privés des modules des feuilles individuelles. En eux, vous mettez dans les fonctions spécifiques de cette feuille.
Worksheet_Activate, Worksheet_Deactivate, Workbook_SheetChange par défaut sont les événements qui vous sont fournis, de sorte que vous pouvez les manipuler, dans le privé feuille modules. (Objet De Feuille De Calcul De Référence)
@Daniel Cook a dit dans les commentaires, alors que ThisWorkbook et de la Feuille de calcul des modules ne sont pas disponibles pour une utilisation directe comme
subName()
oufunctionName()
à l'extérieur du module, il est toujours possible de les appeler à l'aideThisWorkbook.subName()
ouThisWorkbook.functionName()
Un module de classe est le plus proche que vous pouvez obtenir à la programmation orientée objet en VBA. Ils ont les constructeurs, destructeurs, et peut être instancié pour vous donner des objets de la classe.
Quand j'ai dit "private module", je ne voulais pas dire que ses fonctions et méthodes seraient inaccessibles de l'extérieur. Juste que ce module appartient à la Feuille de calcul ou d'un Classeur. L'accessibilité est l'ensemble des méthodes et des sous-routines en utilisant uniquement Public/Privé.
Vous gagnez, mon commentaire est inutile et je suis de l'enlever... et je vais supprimer cette bientôt un.
Eh bien, vous ne pouvez pas annuler la suppression des commentaires. Mais de toute façon... un Private Module en VBA termes ne veut pas dire exactement ce que je pensais de toute façon. Un module de cours privé signifie simplement qu'il n'est pas accessible à partir de "en dehors de son projet". Techniquement, la méthode, est accessible dans le courant de l'Application Excel à l'aide de Application.Run sauf si la méthode est déclarée comme privé ou le module est déclaré comme Privé (qui ne peut être fait avec des modules standard.)
Oui, c'est ce que je voulais dire quand j'ai dit qu'elle s'applique uniquement aux modules standard. De toute façon, je suis upvoting maintenant. 🙂
OriginalL'auteur Anirudh Ramanathan
Je sais au moins que
Modules
à être exécuté etThisWorkBook
est utilisé pour des événements tels queSheetChange
événement, etc.Code commun cracher dans
ThisWorkBook
:cette question est également déjà répondu ici:
http://www.pcreview.co.uk/forums/macro-module-function-sub-and-workbook-and-sheets-t980275.html
OriginalL'auteur Mike Kellogg