使用MsgBox而不暂停应用程序

时间:2011-03-28 13:32:48

标签: ms-access vba access-vba messagebox

我需要向用户显示一条消息。当我使用MsgBox执行此操作时,程序将停止,直到用户单击该框。我想知道是否有办法在不暂停程序的情况下打开MsgBox

7 个答案:

答案 0 :(得分:24)

听起来你并不期待MsgBox的任何用户输入。在这种情况下,根据您的应用,StatusBar可能是一个充分的替代品。

在Excel中,这很简单:

Application.StatusBar = "Please be patient..."
Application.StatusBar = iDone & " of " & iTotal & " items done."

完成后清除StatusBar:

Application.StatusBar = False

在Access中,语法有点复杂:

Temp = SysCmd(acSysCmdSetStatus, "Hey, look at me!") ' Puts out your message
Temp = SysCmd(acSysCmdClearStatus) ' Clears StatusBar

答案 1 :(得分:6)

据我所知,答案是你做不到的。解决方法是一个自定义窗体,用作对话框。

请参阅http://www.mvps.org/access/forms/frm0046.htm(不完全是您的问题,但适用)。

答案 2 :(得分:6)

MsgBox是模态的(意味着窗口出现并停止执行代码,直到它被清除)。正如其他海报/评论者所提到的那样 - 您的另一种选择是编写自己的非模态弹出窗口版本。除非你真的需要它,否则不值得努力。

答案 3 :(得分:4)

改为创建表单。我创建了一个小表单,其中只有一个文本框,上面写着“正在工作,请等待”。在需要时,我打开表单,作为弹出窗口(docmd openform“表单名称”),通常在开始一些需要一些时间才能完成的操作之前。当工作完成时,我关闭表单(docmd close acform“form name”)。这不会停止程序,但会向用户提供“消息”。

答案 4 :(得分:3)

在VB编辑器中:选择“插入”菜单“用户窗体”。 在工具箱中选择TextBox:在UserForm中拖动一个矩形并在其中键入文本。 右键单击UserForm,然后选择“属性”。 在ShowModal属性中:选择False。 在您的VBA模块中输入要在其中打开它的UserForm1.Show和要将其关闭的UserForm1.Hide。 UserForm1是我的,当然使用您创建的表单的相应名称。

答案 5 :(得分:1)

您可以使用WScript的Popup方法。以下是完整的详细信息,包括示例代码:http://msdn.microsoft.com/en-us/library/x83z1d9f%28v=vs.85%29.aspx

答案 6 :(得分:1)

我相信你首先需要评估你是否真的需要一个msgbox来弹出并让你的代码保持运行。

msgbox功能(如前所述)是模态的,你无法“绕过”它。但是,您可以创建一个表单(类似于msgbox),将此表单设置为“非模态”并调用代码以显示此表单。代码工作流程继续。经过测试并在Excel中工作。

更新:My Access丢失了参考,我现在无法测试。希望它也适用于Access。

RGDS