如何在access vba中运行进程时弹出“Please Wait”消息

时间:2014-03-07 20:19:01

标签: vba access-vba

我的访问表单中有一个按钮,点击它时会检查一些代码以查找excel单元格中的数据。完成这个过程需要一段时间。到那时我需要向用户显示Please wait消息。

我正在调用此方法,但无法正常工作

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

3 个答案:

答案 0 :(得分:3)

您可以在执行模式下使用此状态栏。 http://christopherjmcclellan.wordpress.com/2014/03/08/progress-bar-for-ms-access/

在这里完整地发布它有点多,但它依赖于两件大事。首先,您可以在代码中动态创建任何表单的新实例。这取决于Access表单实际上只是美化的类模块。您可以通过使用默认名称" Form1"保存新表单,然后将此代码放在常规* .bas模块中来自行尝试。

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

    Stop
End Sub

请注意,我设置了断点,因为当表单超出范围时,表单将自动销毁。

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

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

答案 1 :(得分:1)

您无法在Excel中显示MsgBox而不会暂停执行marco。 您应该使用状态栏显示消息

Application.StatusBar = "Please be patient..."

然后清除它

Application.StatusBar = False

答案 2 :(得分:-1)

这是一种非常简单的方法:

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

  • 所以你把完成按摩作为标签标题在结束子代码行之上。
  • 然后等待按摩标签标题应该在处理之前。
  • 您的命令按钮可以在鼠标按下输入中使用“please wait”消息,而不是单击输入。