/ / S'assurer que les méthodes VBA publiques ne figurent pas dans la liste des macros Excel - excel, vba

S'assurer que les méthodes VBA publiques n'apparaissent pas dans la liste des macros Excel - excel, vba

Dans Excel VBA (2003), j’ai remarqué que tout Publique ou Ami Sous méthode soit dans un module ou ThisWorkbook qui n’a pas d’arguments apparaitra comme unMacro pouvant être exécuté par l'utilisateur. C'est à dire. lorsque l'utilisateur choisit Outils -> Macro -> Macros ... (ou Alt + F8), la méthode apparaît dans la liste pouvant être exécutée.

Pour des raisons de santé mentale (organisation, maintenance,etc) J'ai besoin de séparer le code en modules. J'espère trouver un moyen non dissimulé de cacher certaines méthodes à l'utilisateur, tout en les laissant visibles par d'autres modules de code. Notez que tout le code est contenu dans le même application, donc aucun code externe n'est appelé.

Mon travail actuel consiste à utiliser Fonctions qui retourne un booléen au lieu de Souss, et ignorez simplement la valeur de retour. eJames a suggéré l’option d’utiliser un argument optionnel dans le Sous, ce qui masquera également la méthode de la liste des macros.

Toutefois, aucun de ces deux groupes ne se sent bien, alors tout conseil sur la manière de structurer une application VBA Excel non triviale serait très apprécié.

Réponses:

42 pour la réponse № 1

Ajoutez les éléments suivants en haut de votre module:

Option Private Module

De MSDN:

Quand un module contient Option Private Module, leparties publiques, par exemple, variables, objets et définis par l'utilisateur types déclarés au niveau du module, sont toujours disponible dans le projet contenant le module, mais ils sont non disponible pour d'autres applications ou projets.


6 pour la réponse № 2

Une solution consiste à donner à la méthode une Optional argument.

Public Sub myPublicSub(Optional dummy_var As Integer)
...
End Sub

4 pour la réponse № 3

Juste un petit ajout à la réponse de Jason Z: des méthodes cachées par Option Private Module sont toujours visibles si vous utilisez Application.Run() invoquer la méthode.


3 pour la réponse № 4

Il convient également de noter un effet secondaire des deux Option Module Privé et l'ajout de paramètres facultatifs signifie que le sous-marin ne fonctionnera plus comme cible d'un raccourci clavier.

Redressé: Si vous avez un raccourci clavier pour définir un raccourci clavier pour lancer une macro. Cette macro ne peut pas être cachée. Sinon, le raccourci clavier ne fonctionnera pas.