Ms access “如何弹出窗口”;请稍等;在access vba中运行进程时的消息

Ms access “如何弹出窗口”;请稍等;在access vba中运行进程时的消息,ms-access,vba,Ms Access,Vba,我的access窗体中有一个按钮,当单击它时,它会检查一些代码以在excel单元格中查找数据。完成这个过程需要一段时间。那个时候我需要向用户显示“请等待”消息 我正在调用此方法,但不起作用 Sub plswaitmsg() Dim statusmsg As Variant statusmsg = SysCmd(acSysCmdRemoveMeter) statusmsg = SysCmd(acSysCmdSetStatus,

我的access窗体中有一个按钮,当单击它时,它会检查一些代码以在excel单元格中查找数据。完成这个过程需要一段时间。那个时候我需要向用户显示“请等待”消息

我正在调用此方法,但不起作用

         Sub plswaitmsg()
         Dim statusmsg As Variant
         statusmsg = SysCmd(acSysCmdRemoveMeter)
         statusmsg = SysCmd(acSysCmdSetStatus, "Loading dropdown data,please wait.")
         End Sub

若不暂停marco的执行,则无法在Excel中显示MsgBox。 您应该使用状态栏来显示消息

Application.StatusBar = "Please be patient..."
那就把它清理干净

Application.StatusBar = False

您可以在执行模式下使用此状态栏。

这是一个有点多张贴在这里的整体,但它依赖于两个大的东西。首先,您可以在代码中动态创建任何表单的新实例。这取决于访问表单实际上只是美化的类模块这一事实。您可以通过使用默认名称“Form1”保存一个新表单,然后将此代码放在常规的*.bas模块中来尝试

Sub ShowForm()
    Dim frm as New Form_Form1
    frm.Visible = True

    Stop
End Sub
请注意,我在中放置了一个断点,因为表单在超出范围时将自动销毁

第二件大事是使用
DoEvents
给操作系统足够的时间重新绘制屏幕


理解了这两件事,您应该能够设计一个带有文本框的表单,该文本框在流程运行时会改变大小。另外,我建议使用UserForm而不是Access表单。当时我还不知道,但您不仅可以在Excel中使用UserForms,还可以在Access中使用UserForms。

这里有一个非常简单的方法:

真正的进程结束时间是最新的代码行

  • 所以,您将finish按摩作为标签标题放在末尾子代码行的上方
  • 然后等待按摩标签标题应在处理前显示
  • 然后,您的命令按钮可以在鼠标按下输入中使用“请等待”消息,而不是单击输入

谢谢您的回复。但它在access中不起作用。在access中,它是
SysCmd acSysCmdSetStatus,“您的消息”
,与上面的消息类似……我看不出MsgBox与此有什么关系吗?还必须将表单的ShowModal属性设置为false