陷入无限循环。当Control + Break不起作用时,有什么方法可以将vba分解为Code

时间:2018-01-12 20:13:29

标签: excel vba excel-vba

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

有没有办法打破程序停止运行它的当前代码行?

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

它被卡在沙漏上。

Ctrl + Break 似乎无法正常工作

似乎正在运行的代码已经劫持了cpu为excel提供的所有配额。

如果我现在无能为力,将来我能做些什么可以更容易地闯入代码?

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

2 个答案:

答案 0 :(得分:1)

将来,在循环中包含DoEvents。它会运行得慢一点,但你可以使用 Ctrl + Break 来阻止它运行。

答案 1 :(得分:1)

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

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

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

  • 在主代码中,在问题循环之前显示表单 在你的循环中你可以更新一些标签或进度条 形式,以便您可以看到循环是否为
    做一些有价值的东西,或者现在只是旋转它的轮子。 你如何做到这取决于你的循环在做什么。

  • 同样在循环中检查boolCancel值。如果是真的话 显示您想要的任何状态信息并从循环中断开。

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