msgbox弹出后,在被处理之前,你的程序会被挂起,因此所有的代码包括Timer事件中的代码都不会执行,所以没有简单的程序可以关掉。其实下面回答提供的方法都很好,而且并不复杂。
特别采用MessageBoxTimeout函数这个方法,就只是在模块前面声明一次这个API函数就行了,然后你所有用到需要自动关闭的msgbox的地方,都不采用msgbox而是采用MessageBoxTimeout就行了,其实相当的简单方便,你觉得复杂可能是因为函数声明和返回值处理,看起来代码比较长,其实相比msgbox,就只是多了一个api函数声明。
用 MsgBoxEx 这个API 函数可以定义自动关闭时长。
用API 吧 复制到窗口里看看效果...
Private Declare 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
Private Sub Command1_Click()
MessageBoxTimeout Me.hwnd, "Hello World", "title", vbInformation, 0, 3000
End Sub
用MSGBOX是无法实现的,你可以做一个假的MSGBOX,也就是做一个新的窗体,这样利用时钟控件来控制就比较简单了。