VBA: à l'Aide de WithEvents sur les UserForms
J'ai un Mot à l'objet userform avec+ de 60 commandes de différents types. Je voudrais évaluer le formulaire chaque fois qu'un control_change événement est déclenché et changer l'état activé de la forme du bouton "soumettre". Cependant, je ne veux vraiment pas à écrire et à maintenir 60 sur le changement des gestionnaires d'événements.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un événement-l'évier de la classe qui va contenir l'événement le code de gestion pour toutes vos commandes d'un type particulier.
Par exemple, créer une classe appelée
TextBoxEventHandler
comme suit:Maintenant, vous devez créer & crochet en place une instance de cette classe pour chaque contrôle du type approprié sur votre formulaire:
Remarque que la raison pour laquelle vous avez besoin pour ajouter le gestionnaire d'événement instances d'une collection, c'est tout simplement pour s'assurer qu'ils restent bien référencé et donc de ne pas se jeter par le garbage collector avant que vous avez terminé avec eux.
Clairement cette technique peut être étendue à traiter avec d'autres types de contrôle. Vous pourriez avoir soit distinct du gestionnaire d'événement classes pour chaque type, ou vous pouvez utiliser une seule classe qui a un membre de la variable (et des biens associés & event handler) pour chacun des types de contrôle que vous devez gérer.
CheckBox
doit être spécifié en tant queMSForms.CheckBox
. Pensé que cette information pourrait être utile pour quelqu'un.Dans ce cas, vous avez quelques options, à cause des gestionnaires d'événement ne peut pas être partagée en VBA/VB6
Option 1: Utilisation d'une centrale de la manipulation d'une fonction qui est appelée à partir de chaque gestionnaire d'événement.
Option 2: Organiser vos contrôles dans des tableaux de contrôle.
Combinant à la fois les options de votre total de gestionnaire d'événement comte va se réduire considérablement et les autres gestionnaires sont juste sans cervelle talons pour le seul vrai gestionnaire d'événement.