VBA代码大全023:用vba做一个自动定时关闭的msgbox对话框

vba有点基础的应该都知道,要在vba中创建弹窗对话框,可以使用msgbox。

 

但是msgbox必须人为关闭它,如果想要创建一个弹窗对话框,然后过一段时间自动关闭,网上有分享说可以借助WshShell的Popup方法。

代码如下:

 

Sub 定时关闭的对话框()
    sPath = Excel.ThisWorkbook.Path & "\"
    Set obj = VBA.CreateObject("Wscript.Shell")
    obj.popup "这是一个自动关闭的对话框", 0.2, "有趣的对话框"
End Sub

 

其中popup方法的语法是这样的:

intButton = object.Popup(strText,[nSecondsToWait],[strTitle],[nType])

第一个参数strText是对话框中显示的文本内容,第二个参数nSecondsToWait是要等待的秒数,也就是几秒后关闭,第三个参数strTitle是对话框的标题文本,第4个参数nType是对话框的按钮类型。

 

但是这个代码我测试了下没有效果。

 

这里介绍另外一种方法,使用api函数MessageBoxTimeout。

这个函数已经是被微软隐藏起来了,但是还可以使用。

代码如下:

 

Declare PtrSafe Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long, ByVal wlange As Long, ByVal dwTimeout As Long) As Long
Sub 定时关闭的对话框()
     MessageBoxTimeout 0, "两秒后自动关闭", "测试", 68, 1, 2000
End Sub

 

其中最后一个参数 dwTimeout 表示要设置的时间,以毫秒为单位。

2000毫秒就表示2秒后关闭。

       

发表评论