【问题标题】:Using generic VBA Access Form for multiple report progress displays使用通用 VBA 访问表单进行多个报告进度显示
【发布时间】:2020-07-13 18:37:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在状态栏中显示一条短信就够了吗?
  • 可能不会。一些显示将是多行的,例如要停用的用户名列表或两个系统之间的不匹配列表。不足以保证报告,但有时我可能会得到多达十几行。
  • 对于那些只有进度显示的人,它会起作用,我会改变它,但对于其他人,不......但是谢谢你的建议!
  • 您是否尝试在代码行后添加DoEvents
  • 是的!那成功了!谢谢!

标签: ms-access vba ms-access-2016


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多