Les meilleures pratiques pour la création d'un objet public dans Excel-VBA?
Quelle est la meilleure pratique pour la création d'un Excel-VBA
objet de données (dictionnaire, liste, etc.) qui est accessible par tous les membres de l'application? Doit-il être déclaré comme un module séparé ou un module de classe?
Par exemple, je veux créer un objet dictionary lequel les différents sous-routines voulez vérifier une entrée de l'utilisateur contre (si elle contient ou non). Si cette objet dictionary être son propre module, module de classe, ou d'une partie du module qui contient les sous-programmes qui l'utilisent?
Remarque: cette question est une extension de Vérifier si une valeur est un membre de une liste
- Le
Dictionary
objet lui-même est une instance de la classe Dictionary. Par conséquent, vous faire de cette instance unpublic
variable de sorte qu'il est accessible dans l'ensemble de votre Projet VBA. Il n'y a pas de point de créer une classe qui remplace laDictionary
(ou Collection) de la classe parce que les méthodes et les fonctions standard de classe a est suffisant pour vos besoins. RemplacerDim
avecPublic
et le bâton de la déclaration en dehors de toute procédure
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser à la suite de la construction (déclarer votre
myList
objet commePublic
dans le haut de votre module):VBA peut être frustrant pour les gens qui sont habitués à nice POO-amicale des langues comme Java et C#. Nous devons accepter VBA limites et simplement de faire du mieux qu'on peut avec ce qu'il offre.
Ce que vous décrivez ressemble presque à quelque chose qui vous déclarer en tant que Singleton dans d'autres langues.
Ma solution serait de créer un "Principal" module (module de Classe). Dans les il y, créer un lexique particulier, et de créer un accesseur Public de la fonction pour cela. Cela permettra à vos autres méthodes - er - fonctions/sous-marins pour accéder à l'aveuglette.
BTW, le "Nettoyage" de la sous-routine est juste de la bonne pratique. À la fin de votre macro, vous devez appeler le "Nettoyage" de la sous-routine pour libérer de la mémoire que Excel peut avoir alloué pour les objets que vous avez créés. Pour les Modules de Classe, vous pouvez mettre votre code de nettoyage dans
et il sera appelé automatiquement.
Note - le code précédent, il faudrait vous ajouter le "Microsoft Scripting Runtime" comme référence. Cela vous donne l'utile type de conseils lorsque vous travaillez avec le dictionnaire tout en vous code. Si vous ne voulez pas le faire pour une raison quelconque, utilisez ce code: