Outlook vba定时关闭用户窗体
-
29-10-2019 - |
题
我正在尝试设置一个会出现的用户窗体,保持10秒,然后自动关闭。我以前在Excel中这样做过,使用 OnTime
方法:
Sub Example()
Application.OnTime EarliestTime:=Now + TimeValue("00:00:10"), _
Procedure:="Hide_userform2"
UserForm2.Show
End Sub
Sub Hide_userform2()
UserForm2.Hide
End Sub
但是,由于Outlook无法识别 OnTime
方法,我一直在尝试使用 Timer
声明:
Sub example2()
Strt = Timer
Do While Timer < Strt + 10
UserForm2.Show
Loop
UserForm2.Hide
End Sub
这样做的问题是,当用户窗体打开时,宏(包括循环)暂停,直到手动关闭用户窗体。..
任何解决方法的帮助将不胜感激。
干杯!
解决方案
我运行了一些测试,问题似乎是,一旦您显示用户表单,它就会获得控制权,并且不会将其返回给 example2()
.
似乎有效的是,如果你把下面的代码放在你的表单中 Acitvate
子,它会正确隐藏。这可能不是你想要的,你可能正在使用表单进行其他事情,这个过程会搞砸它,但它会让你朝着正确的方向前进。
Private Sub UserForm_Activate()
Strt = Timer
Do While Timer < Strt + 10
DoEvents 'please read linked documentation on this
Loop
UserForm2.Hide
End Sub
使用 DoEvents
将确保表格显示正确,但可能有一些不必要的副作用。一定要阅读 这篇微软文章 和一个 博客文章 杰夫阿特伍德是一个有趣的阅读,虽然不一定是关于VBA。
其他提示
此页面提供了自定义计时器加载项(。xla)可能对您有用。这与您上面的代码具有相同的想法(将以后面的代码形式出现): 通用标签
不隶属于 StackOverflow