陷入无限循环。当控制+中断不起作用时将 vba 分解为代码的任何方法



我的代码卡住了。 它可能处于无限循环中。 不确定。

有没有办法破坏程序以停止在当前运行它的代码行上?

我想避免关闭 excel,因为我希望能够捕捉到它在循环中的位置,并且通过进入代码,我将能够知道完成了多少处理。 如果可能的话,我想破解代码。

它卡在沙漏上。

Ctrl+中断似乎不起作用

似乎运行代码劫持了 cpu 提供给 excel 的所有配额。

如果我现在无能为力,那么将来我是否可以更轻松地破解代码?

我认为循环中的间歇性等待可能是一个可行的解决方案。

将来,在循环中包含DoEvents。它的运行速度会慢一点,但您将能够使用Ctrl+Break来阻止它运行。

进入循环时创建一个进度对话框,并包含一个Cancel按钮。在循环中检查Cancel信号/事件。这也为您提供了对Cancel的反应方式的灵活性 - 例如,您可以停止循环并在新对话框中显示关键信息。

实现我所描述的基本步骤(不一定是最优雅或最可重用的,但对于那些经验较少的人来说足够简单):

  • 创建具有合适标签或进度条项的无模式(非模式)窗体(用于 视觉效果)。包括用于取消的公共属性(布尔值)(例如boolCancel)
  • 在表单上放置一个按钮,onClick设置boolCancel = True

  • 在主代码中,在问题循环之前显示窗体。
    在循环中,您可以更新窗体上的一些标签或进度条,
    以便您可以直观地指示循环是否正在
    做有价值的事情,或者它现在是否只是在旋转它的轮子。 如何执行此操作取决于您的循环正在做什么。

  • 此外,在您的循环中检查您的boolCancel值。如果为真,则 显示所需的任何状态信息并从循环中断。

  • 如果循环正常结束,请隐藏/卸载进度对话框。

最新更新