Le code VBA suivant s'arrête à cette partie est en dehors de l'utilisateur em>: p> cette pièce est à l'intérieur de l'userForm em>: p> Le code s'arrête à cette partie est en dehors de l'userForm em>: P>: P> > cette pièce est à l'intérieur de l'userForm em>: p> bien sûr, je ne peux pas mettre < code> me.show code> à l'intérieur de userform_ACtivate car cette procédure ne tire qu'après l'événement UserForm Afficher l'événement. P> La documentation de J'essaie de Utilisez une utilité modale comme une barre de progression pour empêcher l'utilisateur d'interagir avec l'application lorsqu'un processus fonctionne. Mais ce sera difficile à accomplir si tout mon code doit être dans la procédure UserForm_ACtivater. P> Suis-je manque quelque chose ici? Pourquoi toutes les exécutions de code s'arrêtent-elles à moi.show code>. De mes tests, il semble que me.show code> arrête toute exécution du code, même si le code est à l'intérieur de l'userForm. moi .Show code>, après l'affichage de l'utilisateur. Il n'y a pas d'erreur, il n'arrive tout simplement pas à exécuter du code. Il semble que la seule façon d'exécuter du code à l'intérieur d'une formulaire modale dans VBA soit de l'inclure dans la procédure userForm_ACtivater, comme ceci: p> userForm.showmodal code> dit " quand une information userse est modal, l'utilisateur doit fournir des informations ou fermer leformez-vous avant d'utiliser une autre partie de l'application. Aucun code suivant n'est exécuté jusqu'à ce que laformerform soit masqué ou non chargé. P> moi.show code>? P> p>
5 Réponses :
Je pense que je l'ai compris. P>
Après L'ordre des événements est donc le suivant: Tout code que je veux exécuter doit être dans la procédure userform_ACtivater et doit être avant em> La structure est très stricte, mais je pourrais peut-être utiliser cette structure à mon avantage. P> moi.show code> Les incendies d'événement userForm_ACtivater. S'il n'y a pas de code dans la procédure userForm_ACtivater, rien ne se produira car VBA attend moi.hide code>. P>.
me.show code>> userform_activate code>> me.hide code> p> P>
moi.hide code>. p>.
Tout ce que vous avez vraiment besoin de faire si vous souhaitez toujours pouvoir interagir avec la feuille pendant que le formulaire est uplan est utile, utilisez ce code lorsque vous appelez le formal: userForm.show vbmodalyse code>.
Lorsque le formulaire est affiché avec Si vous mettez à jour le formulaire Propriété P> vbmodal code>, le code suspendra l'exécution et attendra l'interaction utilisateur avec le formulaire. Par exemple, en cliquant sur un bouton ou en utilisant une liste déroulante. ShowModal = False
Yup, UserForms sans vbmodeless sont faciles, mais je dois verrouiller l'interaction de l'utilisateur avec l'application jusqu'à la fin du processus. Il ne s'agissait que de déterminer comment structurer le code dans une formulaire userforme VBModal. Dommage que la documentation ne dise pas simplement "si vous utilisez VBModal, assurez-vous de mettre n'importe quel code que vous souhaitez exécuter dans userform_ACtivater et avant i> moi.hide. Merci! Merci! Merci! Merci! Merci!
Cela n'a pas fonctionné pour moi. L'appelant Sub code> continue à exécuter, mais absolument aucun composant n'est rendu, pas une simple étiquette simple.
Je ne sais pas vraiment ce qui vous va dans votre esprit car il existe une grande variété de code pour ce que vous demandez, mais j'espère que cela peut aider P>
Sous-Sous-CMDSWITCH_CLICK () UserForm1.hide UserForm2.show p>
end sous p>
Je pense que je l'ai compris Essayez de faire cette étape simple Dans vous, faites un clic droit sur la partie bancaire et cliquez sur Propriétés. Changer le "showmodal" sur false ou dans le code VBA lorsque vous affichez le formal utilisateur à l'aide du code suivant: p>
userForm1.show false p>
Je cherchais une réponse à la raison pour laquelle j'avais l'erreur suivante:
Erreur de temps d'exécution '5': appel de procédure ou argument de procédure non valide p> blockQuote>
Lorsque vous exécutez cette ligne de code: p>
xxx pré> même si cette ligne fonctionne: p>
UserForm1.Show vbModal UserForm1.Show vbModeless