2009-05-20 9 views
0

Ich habe eine einfache Userform erstellt in meinem Outlook VBA-Makro - ich kann die Form sichtbar machen mit diesem Code:Benutzerformular in Outlook nicht reagiert (nicht schließen kann, Schaltfläche klicken Ereignis nicht ausgelöst)

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

... und das UserForm_Initialize() Event feuert tatsächlich. Aber das Klicken auf den "Senden" -Button im Formular macht nichts - das SubmitButton_Click() Event (das automatisch durch Doppelklicken auf die Schaltfläche im Designer erstellt wurde) wird nie ausgelöst. Außerdem hat das Benutzerformular das übliche kleine rote X in der oberen rechten Ecke des Fensters, aber das Klicken macht nichts (das Formular wird nicht geschlossen oder beendet).

Irgendeine Idee, was ich falsch machen könnte? Ich bin ziemlich neu in VBA.

+0

Haben Sie versucht, einen Haltepunkt in "UserForm_Initialize()" zu setzen und den Code im Debugger zu durchlaufen? BTW können Sie die "VBA.UserForms.Add" ausschneiden, es ist völlig redundant. – Tomalak

+0

Ja, so habe ich bestätigt, dass das Ereignis UserForm_Initialize() tatsächlich ausgelöst wird. Das Problem ist SubmitButton_Click() - Breakpoints in dort werden nie getroffen. – MGOwen

+0

Und danke für den Tipp über VBA.UserForms.Add – MGOwen

Antwort

0

OK, gelöst: Ich geändert:

PasswordForm.Show (Modal) 

zu

PasswordForm.Show 

und es funktioniert jetzt, obwohl ich so, wie es ein bisschen funktioniert ändern müssen werden, dass die zur Aufnahme form wird nicht mehr modal sein (ich nehme an, es ist sowieso die bessere lösung, modale können für den benutzer lästig sein, ich muss nur überprüfen, ob sie das formular eingereicht haben usw.).

Vielen Dank für Ihre Anregungen.

+0

Froh für Sie, jetzt markieren Sie diese Antwort als die richtige. – jpinto3912

+0

Ich weiß, dass diese Frage alt ist, aber ich dachte, ich würde trotzdem hinzufügen, dass die Show-Methode zwei mögliche Konstanten verwendet: vbModal oder vbModeless. Es gibt kein Keyword wie "Modal". Überrascht hat das niemand erwähnt. – JimmyPena

1

Manchmal werden Steuerelemente in VBA von ihren Ereignissen abgekoppelt. Das kann daran liegen, dass Sie das Steuerelement umbenannt haben oder weil Sie die Ereignisprozedur versehentlich umbenannt haben (obwohl dies selten aus anderen Gründen passieren kann). Wenn Sie vor dem Ausführen des Formulars vergessen haben, "zu kompilieren", haben Sie möglicherweise einen Fehler in dem Formular, das das Problem verursacht.

Der einfachste Weg, um zu überprüfen, ist das Formular in der Design-Ansicht zu öffnen, wählen Sie die betreffende Schaltfläche und drücken Sie F7. Wenn eine neue Prozedur erstellt wird, kopieren Sie einen Code und fügen Sie ihn ein. Kopieren Sie dann den alten Code und fügen Sie ihn ein.

Nachdem Sie dies getan haben, gehen Sie zum Menü "Debuggen" und klicken Sie auf "kompilieren". Wenn Fehler festgestellt werden, korrigieren Sie sie und klicken Sie erneut auf "Kompilieren". Wiederholen Sie dies, bis es ohne Beanstandung kompiliert wird. Versuchen Sie dann, das Formular erneut auszuführen.

+0

@Oorang: Danke, ich habe jetzt die Schaltfläche gelöscht, neu erstellt, sowie den Event-Handler-Code genau wie du gesagt hast, und kompiliert. Gleiches Problem - nichts passiert, wenn Sie den Knopf drücken (keine Reaktion, Haltepunkt nicht getroffen, sogar das Schließen des Formulars funktioniert nicht). Irgendwelche anderen Gedanken? – MGOwen

0

Wenn Sie in Office 03/07 sicherstellen möchten, dass es modal angezeigt wird, setzen Sie das Verhalten des Formulars .ShowModal auf "True". Ich hatte Probleme mit dem Versuch, die Form während des Show-Events modal zu gestalten.

Verwandte Themen