使用通用VBA访问表单显示多个报告进度

时间:2018-03-14 15:02:16

标签: access-vba ms-access-2016

我有几个报告/进程要么显示大量进度信息,要么显示我认为不值得创建输出文件的少量信息,我想避免使用一堆消息框。我创建了一个带有列表框的通用表单,目的是使用以下命令显示进度:

Forms(formName).lstMessages.AddItem "Status message"

问题是在完成子项之前不会显示任何内容,如果报告需要一分钟左右,则通用表单实际上会在短时间内消失。

没有抓住每个子/函数并将它们放入通用表单的VBA代码中,有什么方法可以" flush"输出,以便我显示进度?或者有没有人建议另一种方法来完成我想要做的事情?谢谢!

1 个答案:

答案 0 :(得分:1)

添加以下行:

DoEvents 
更改列表框内容后,

使更改可见。

你需要注意,DoEvents做了什么:

Yields execution so that the operating system can process other events.

这可能会产生无法预料的副作用。例如。如果启动报告过程的按钮在进程运行时保持活动状态,则用户可以再次单击该按钮,这可能会造成严重破坏。因此,请确保在进程运行时禁用该按钮。

请参阅https://msdn.microsoft.com/en-us/library/aa231254(v=vs.60).aspx