MS Access 2003 - 消息框:如何通过代码自动回答“ok”

时间:2010-03-19 17:18:19

标签: ms-access vba access-vba messagebox ms-access-2003

所以有几个愚蠢的问题:

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

MsgBox " ", vbOkOnly, "This little message box"
然后我可以用更多代码转身并点击“确定”按钮。所以基本上消息boox会自动弹出,然后自动消失?

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

以及a)我只是想知道你是否能做到这一点,以及命令是什么

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

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

谢谢!

3 个答案:

答案 0 :(得分:5)

MsgBox是模态。只有两个与模态相关的设置

  • ApplicationModal
  • 系统模式

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

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

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

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

Private Sub ApiSleep(SleepMilliseconds as Long)
    Sleep SleepMilliseconds 
End Sub

答案 1 :(得分:1)

我知道这是前一段时间被问到的,但我使用的解决方案是:

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

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

数字1表示在自动关闭之前要显示的秒数。

我将此用作保存程序,因为它是一个有用的通知,保存了某些东西,但不要求用户实际点击“确定”。

无论如何,这是我的两个便士值得回答。希望这也有助于其他人!

答案 2 :(得分:-1)

Sendkeys "~",false

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

我认为你正在寻找油漆事件,或强迫表格刷新,以实现你真正想做的事情!

编辑:啊,该死的,是的,因为这是代码被暂停的模态...哦哦!正如所建议的那样,要么编写自己的,要么你必须在另一个线程中抛出一些东西,我不知道如何在MS Access中进行多线程!

第二次修改:您是否看过Application.Echo False暂停并Application.Echo True恢复绘画布局?