【问题标题】:How to keep a code running in VBA while a form window is open?如何在表单窗口打开时保持代码在 VBA 中运行?
【发布时间】:2023-03-02 22:03:02
【问题描述】:

在 Excel VBA 中,我想按下一个按钮,运行一些代码,当代码运行时,会出现一个表单窗口,上面写着“代码正在运行,请等到完成。单击停止按钮以终止代码。”

但每次我 .Show 一个表单时,代码都会停止,等待表单窗口关闭后再继续。有没有办法在窗体窗口打开时强制代码继续运行? 谢谢!

已回答:在 .Show 末尾添加 (False) 或将表单的 ShowModal 属性更改为 False。然后在 fmRunning.Show(False) 之后添加 Application.Wait (Now + TimeValue("0:00:01"))。或插入“DoEvents”而不是 Application.Wait 谢谢大家!!

【问题讨论】:

  • 显示表单而不使其成为模态UserForm1.Show(False)
  • 感谢您的建议,但是当我这样做时,表单显示为空白且无响应。我还有什么需要做的吗?
  • 在调用用户表单后尝试输入DoEvents
  • 该死的@Scott 很快。 :)
  • 我添加了 DoEvents,我遇到了同样的问题,除了现在窗口不像以前那样在代码末尾关闭,但至少在代码完成后,表单会填充文本 ( #trolledByCode)。这是我的方法: Sub codename() DoEvents fmRunning.Show(False) '我也尝试过不使用 false 和 ' 而不是使用 vbModeless 和另一次将其属性设置为 0. ... ... fmRunning.Close结束子

标签: excel forms vba button


【解决方案1】:

您需要将用户窗体设置为无模式。这可以通过两种方式完成:

  • 通过选择用户窗体并将 ShowModal 属性更改为 False
  • 或通过将 modal 属性设置为 0 (vbModeless) 打开用户窗体
Userform.Show vbModeless

请参阅MSDN 了解更多信息。

【讨论】:

  • 感谢您的建议,但是当我执行其中任何一项时,表格显示为空白且无响应。我还有什么事情要做吗?
【解决方案2】:

仅使用Userform.Show vbModeless 会导致空白表单。 您还应该使用命令Userform.Repaint。这将刷新表单上的信息。示例:

Userform.Show vbModeless
Userform.Caption = "Some text"   'change the Caption text
Userform.Repaint   'refresh changes

这样你应该会看到变化

【讨论】:

    【解决方案3】:
    1. 在“项目”面板中选择表单。
    2. ShowModal 更改为 false

    即使表单被打开,这也会让你的代码继续运行

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 2012-02-21
      • 1970-01-01
      • 2020-11-08
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多