1

所以几个愚蠢的问题:

如果我在某些情况下包含此内容:

MsgBox " ", vbOkOnly, "This little message box"

然后我可以用更多的代码转身并'单击确定按钮。所以基本上消息框会自动弹出,然后自动消失?

我知道这很愚蠢,因为你想知道,那你为什么要消息框......

好吧a)我只是想知道你是否可以这样做,以及命令是什么

b)我有一些基本形状(形状对象)在消息框出现时可见。但是如果没有消息框,在等待按钮被点击时不会出现暂时的代码中断,因此那些漂亮的图像对象会在表单上生效。

所以我真的不需要消息框,只需要显示对象的临时中断。

谢谢!

4

3 回答 3

5

AMsgBox是模态的。只有两个 Modality 相关的设置

  • 应用模式
  • 系统模式

因此,如果您当前的应用程序弹出 Msgbox,则在您单击消息框上的按钮之前不会运行任何代码。

解决此问题的方法是使用表单设计您自己的消息框。您可以将其弹出并保持打开,然后您可以“单击”您想要的任何按钮。

如果你想要延迟,你可以使用 Win API 来休眠

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub ApiSleep(SleepMilliseconds as Long)
    Sleep SleepMilliseconds 
End Sub
于 2010-03-19T17:26:45.640 回答
1

我知道这是不久前问过的,但我使用的解决方案是:

CreateObject("WScript.Shell").PopUp "Save Successful!", 1, "Save"

它的工作原理是一个消息框像普通的一样显示,但是它有自己的系统计时器,这意味着你可以自动关闭消息框,甚至不做任何事情。

数字 1 表示您希望它在自动关闭之前显示多少秒。

我将此用于保存过程,因为它是一个有用的通知,表明某些内容已保存,但不需要用户实际单击“确定”。

无论如何,这是我的两便士的答案。希望这对其他人也有帮助!

于 2013-04-11T09:21:46.923 回答
-1
Sendkeys "~",false

应该关闭 msgbox(假设它有焦点)

我认为您正在寻找绘画事件,或者强制刷新表单以实现您真正想要做的事情!

编辑:啊该死的,是的,因为它是模态的,所以代码被暂停了......哦!如建议的那样,要么自己编写,要么必须在另一个线程中投入一些东西才能做到这一点,而且我不知道如何在 MS Access 中进行多线程!

第二次编辑:您是否考虑过Application.Echo False暂停和Application.Echo True恢复绘画布局?

于 2010-03-19T17:29:09.330 回答