Frage

Ich versuche, ein Benutzerformular einzurichten, das angezeigt wird, 10 Sekunden lang angezeigt wird und dann automatisch geschlossen wird.Ich habe das schon einmal in Excel gemacht, mit dem OnTime Methode:

Sub Example()
     Application.OnTime EarliestTime:=Now + TimeValue("00:00:10"), _ 
     Procedure:="Hide_userform2"
     UserForm2.Show
End Sub

Sub Hide_userform2()
     UserForm2.Hide
End Sub

Da Outlook das jedoch nicht erkennt OnTime Methode, ich habe versucht, die zu verwenden Timer Stellungnahme:

Sub example2()
Strt = Timer
Do While Timer < Strt + 10
    UserForm2.Show
Loop
UserForm2.Hide
End Sub

Das Problem dabei ist, dass beim Öffnen des Benutzerformulars das Makro (einschließlich der Schleife) anhält, bis das Benutzerformular manuell geschlossen wird ...

Für Hilfe bei der Problemumgehung wäre ich sehr dankbar.

Prost!

War es hilfreich?

Lösung

Ich habe einige Tests durchgeführt und das Problem scheint darin zu bestehen, dass das Benutzerformular, sobald Sie es anzeigen, die Kontrolle übernimmt und sie nicht an zurückgibt example2().

Was zu funktionieren scheint, ist, wenn Sie den folgenden Code in Ihr Formular einfügen Acitvate sub, es wird korrekt ausgeblendet.Das ist vielleicht nicht genau das, was Sie wollen, vielleicht verwenden Sie das Formular für andere Zwecke und dieser Vorgang wird es durcheinander bringen, aber es bringt Sie in die richtige Richtung.

Private Sub UserForm_Activate()
    Strt = Timer
    Do While Timer < Strt + 10
        DoEvents 'please read linked documentation on this
    Loop
    UserForm2.Hide
End Sub

Benutzen DoEvents stellt sicher, dass das Formular korrekt angezeigt wird, kann jedoch unerwünschte Nebenwirkungen haben.Unbedingt lesen diesen Microsoft-Artikel und ein Blogeintrag von Jeff Atwood ist eine interessante Lektüre, wenn es auch nicht unbedingt um VBA geht.

Andere Tipps

Diese Seite bietet ein benutzerdefiniertes Timer-Add-In (.XLA), das für Sie arbeiten kann.Es ist die gleiche Idee wie der oben angegebene Code (dies würde in den Formularcode zurückgehen): generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top