目前无法进入休息模式

时间:2015-11-13 17:13:13

标签: excel vba debugging breakpoints worksheet

当我在excel VBA中有sheet.add或sheets.delete时,这种情况越来越多。搜索和搜索后,我终于找到了official Microsoft支持页面。我的问题是,有没有人知道为什么我可以一遍又一遍地完成这段代码,然后突然它开始做微软所说的一直做的事情,有没有办法解决它?

Sub foo()

    Sheets.add
    debug.print "sheet added" 'breakpoint here

End sub

就这么简单。你将无法重新创建它,因为我要问的问题是它最初不会发生。它一遍又一遍地工作,然后随机呈现linked Microsoft支持页面中描述的错误。

4 个答案:

答案 0 :(得分:0)

以下是一些不是万无一失的建议,

首先,验证如果未设置断点,则不会发生错误。

如果没有,请尝试其他一些事项:

  1. 从VBE调试菜单“编译VBA项目”,值得一试。
  2. 完全删除该行。运行代码。然后将该行重新放入并使用断点再次尝试。
  3. DoEvents
  4. 之后添加Sheets.Add语句
  5. MsgBox上使用Debug.Print代替断点。显示消息框后,尝试使用 ctrl + fn + End 手动中断。 (此时,“破解”不是必要的,但看看你是否可以打破这种方式会很有趣)
  6. Sheets.Add上设置一个断点;实际上,如果您可以将断点放在前一行,则没有理由将断点放在Print语句中。
  7. 有没有Addins?如果是这样,请禁用所有这些并一次重新启用,测试哪一个可能导致错误。

答案 1 :(得分:0)

另一个Excel / VBA故障。

当我单击运行宏的按钮时发生在我身上:

  • 我首先尝试直接从VBE运行宏
  • 如果失败,那么我在宏的第一条指令处输入一个断点
  • 如果仍然失败,我同时尝试
  • 或者,在单击按钮并在第一个断点处中断之后,我执行单个步骤SHIFT F8),然后可以像往常一样自由运行调试({{1} })。

到目前为止,我不再遇到此错误。

可能也不是万无一失,但值得一试。

答案 2 :(得分:0)

检查是否在项目中引用/使用了Microsoft的 Visual Basic for Applications Extensibility 。这样可以防止程序暂停执行:

Excel帮助具体说:

使用可扩展性(附加)对象模型以编程方式对项目进行了更改。这样可以防止程序中止执行。 您可以继续运行或结束执行,但不能暂停执行

在对项目进行更改时(动态地例如使用InsertLine等),您无法单步执行代码。该代码可以运行,但不能单步执行。

答案 3 :(得分:0)

删除某些对象(包括ActiveX对象)实际上会更改VB项目。我花了一些时间才意识到下面的代码行阻止了VBE进入中断模式:

Excel.ActiveSheet.DrawingObjects.Delete

如果您可以识别出引起问题的代码,并且操作顺序并不重要,请将其移至脚本末尾。