优秀的编程知识分享平台

网站首页 > 技术文章 正文

VBA实现延时关闭消息对话框(vba如何停止ontime)

nanyue 2024-08-02 17:35:30 技术文章 6 ℃

VBA消息框相比大家都用过,MsgBox,用于给用户展示一些信息。

有时候我们希望这种消息框一段时间后自行关闭。

今天跟大家分享一下具体操作。

VBA中实现这种自动关闭的延时对话框,需要借用WIndows操作系统的API。需要先声明该API,然后在模块中调用。

声明API

32位系统和64位系统,声明方法略有不同。参数信息如下:

参数

类型

说明

hwnd

long指针

窗口句柄。一般赋值0,表示当前窗口句柄。

lpText

字符串

要展示给用户的消息。

lpCaption

字符串

对话框标题

wType

VbMsgBoxStyle

VbMsgBoxStyle常量。消息框有vbInformation。

wlange

long

赋值1即可

dwTimeout

long

超时时间,单位:毫秒。超过时间自动关闭对话框。

#If Win64 Then '64位
    Public Declare PtrSafe Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" ( _
        ByVal hwnd As LongPtr, _
        ByVal lpText As String, _
        ByVal lpCaption As String, _
        ByVal wType As VbMsgBoxStyle, _
        ByVal wlange As Long, _
        ByVal dwTimeout As Long) As Long
#Else
    Public Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" ( _
        ByVal hwnd As Long, _
        ByVal lpText As String, _
        ByVal lpCaption As String, _
        ByVal wType As VbMsgBoxStyle, _
        ByVal wlange As Long, _
        ByVal dwTimeout As Long) As Long
#End If

调用

声明完之后,就可以在其他模块调用。

'
' 测试自动关闭对话框
'
Sub testMessageBoxTimeout()
    MessageBoxTimeout 0, "这个对话框将在3秒后自动关闭。", "自动关闭的对话框", vbInformation, 1, 3000
End Sub

效果如下:

Tags:

最近发表
标签列表