我需要向用户显示一条信息。当我使用MsgBox
时,程序会停止直到用户关闭弹窗。我想知道是否有一种方法可以在不暂停程序的情况下打开MsgBox
。
我需要向用户显示一条信息。当我使用MsgBox
时,程序会停止直到用户关闭弹窗。我想知道是否有一种方法可以在不暂停程序的情况下打开MsgBox
。
听起来你不希望从MsgBox中获取任何用户输入。在这种情况下,根据你的应用程序,StatusBar
可能是一个适当的替代品。
在Excel中,这很容易实现:
Application.StatusBar = "Please be patient..."
Application.StatusBar = iDone & " of " & iTotal & " items done."
清除状态栏的方法如下:Application.StatusBar = False
在Access中,语法有点更加复杂:
Temp = SysCmd(acSysCmdSetStatus, "Hey, look at me!") ' Puts out your message
Temp = SysCmd(acSysCmdClearStatus) ' Clears StatusBar
MsgBox是模态的(意味着窗口会弹出并暂停代码的执行,直到它被清除)。正如其他发布者/评论者所提到的-你的替代方案是编写自己的非模态弹出版本。除非你真的需要这样做,否则不值得花费这种努力。
我相信你首先需要评估一下是否真的需要一个弹出式消息框来保持你的代码运行。
如已经提到的,消息框功能是模态的,你无法“绕过”它。但是,你可以创建一个类似于消息框的表单,将此表单设置为“非模态”,并调用显示此表单的代码。代码工作流程继续进行。在Excel中测试并可行。
Dim myMessage as String
Dim myDelay as Integer
myMessage = "This message will self destruct in 8 seconds!"
myDelay = 8
Shell "msg /TIME:" & myDelay & " " & Environ("Username") & " " & myMessage