2009-05-20 15 views
0

J'ai créé d'un simple formulaire utilisateur dans mon Outlook macro VBA - je peux rendre la forme visible à l'aide de ce code:UserForm dans Outlook ne répond pas (ne peut pas fermer, bouton événement click ne se déclenche pas)

 
VBA.UserForms.Add (PasswordForm.Name) 
PasswordForm.Show (Modal) 

... et l'événement UserForm_Initialize() se déclenche. Mais cliquer sur le bouton "Envoyer" sur le formulaire ne fait rien - l'événement SubmitButton_Click() (qui a été créé automatiquement en double-cliquant sur le bouton dans le concepteur) ne se déclenche jamais. De plus, le formulaire utilisateur a le petit X rouge habituel dans le coin supérieur droit de la fenêtre, mais cliquer ne fait rien (le formulaire ne ferme pas ou ne quitte pas).

Une idée de ce que je pourrais faire de mal? Je suis assez nouveau à VBA.

+0

Avez-vous essayé de définir un point d'arrêt dans "UserForm_Initialize()" et de parcourir le code dans le débogueur? BTW vous pouvez couper le "VBA.UserForms.Add", il est complètement redondant. – Tomalak

+0

Oui, c'est ainsi que j'ai confirmé que l'événement UserForm_Initialize() se déclenche effectivement. Le problème est SubmitButton_Click() - les points d'arrêt ne sont jamais touchés. – MGOwen

+0

Et merci pour l'astuce à propos de VBA.UserForms.Add – MGOwen

Répondre

0

OK, résolu: J'ai changé:

PasswordForm.Show (Modal) 

à

PasswordForm.Show 

et il fonctionne maintenant, bien que je vais devoir changer la façon dont il fonctionne un peu pour tenir compte du fait que la la forme ne sera plus modale (je suppose que c'est la meilleure solution de toute façon, les modaux peuvent être agaçants pour l'utilisateur, c'est juste que je dois vérifier qu'ils ont soumis le formulaire, etc maintenant).

Merci à tous pour vos suggestions.

+0

Heureux pour vous, maintenant marquer cette réponse comme la bonne. – jpinto3912

+0

Je sais que cette question est ancienne, mais je pensais que j'ajouterais quand même que la méthode d'affichage prend deux constantes possibles: vbModal, ou vbModeless. Il n'y a pas de mot-clé tel que "Modal". Surpris personne n'a mentionné cela. – JimmyPena

1

Parfois, les commandes de VBA sont découplées de leurs événements. Cela peut être dû au fait que vous avez renommé le contrôle ou parce que vous avez accidentellement renommé la procédure événementielle (bien que cela puisse rarement se produire pour d'autres raisons). En outre, si vous avez oublié de "compiler" avant d'exécuter le formulaire, vous pouvez avoir une erreur sur le formulaire à l'origine du problème.

La manière la plus simple de vérifier est d'ouvrir le formulaire en mode Création, de sélectionner le bouton en question et d'appuyer sur F7. Si une nouvelle procédure est créée, copiez et collez votre code, puis copiez/collez votre ancien code et supprimez l'ancien. Après avoir fait cela, allez dans le menu "Debug" et cliquez sur "compiler". Si des erreurs sont détectées, corrigez-les en cliquant à nouveau sur "Compiler". Répétez jusqu'à ce qu'il compile sans se plaindre. Ensuite, essayez de réexécuter votre formulaire.

+0

@Oorang: Merci, j'ai maintenant supprimé le bouton, recréé à partir de zéro, ainsi que le code du gestionnaire d'événements exactement comme vous l'avez dit, et compilé. Même problème - rien ne se passe lorsque vous appuyez sur le bouton (pas de réaction, point d'arrêt non touché, même la fermeture du formulaire ne fonctionne pas). D'autres pensées? – MGOwen

0

Dans Office 03/07, si vous voulez vous assurer qu'il est modal, définissez le comportement .ShowModal du formulaire sur "True". J'ai eu des problèmes avec essayer de faire le formulaire modal pendant l'événement de spectacle.