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

Using generic VBA Access Form for multiple report progress displays

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

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

问题是在子完成之前不会显示任何内容,对于需要一分钟左右的报告,通用表格实际上会消失一小段时间。

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

添加这一行:

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