Excel Can';此时不要进入中断模式
当我在excel VBA中使用sheets.add或sheets.delete时,这种情况越来越多。经过一次又一次的搜索,我终于在上面找到了支持页面。我的问题是,有人知道为什么我可以一次又一次地使用这段代码,然后突然它开始做微软说它会一直做的事情,有没有办法修复它Excel Can';此时不要进入中断模式,excel,vba,debugging,breakpoints,worksheet,Excel,Vba,Debugging,Breakpoints,Worksheet,当我在excel VBA中使用sheets.add或sheets.delete时,这种情况越来越多。经过一次又一次的搜索,我终于在上面找到了支持页面。我的问题是,有人知道为什么我可以一次又一次地使用这段代码,然后突然它开始做微软说它会一直做的事情,有没有办法修复它 Sub foo() Sheets.add debug.print "sheet added" 'breakpoint here End sub 就这么简单。您将无法重新创建它,因为我要问的问题是,它最初不会发生。
Sub foo()
Sheets.add
debug.print "sheet added" 'breakpoint here
End sub
就这么简单。您将无法重新创建它,因为我要问的问题是,它最初不会发生。它可以一次又一次地正常工作,然后随机显示Microsoft支持页面中描述的错误。以下是一些并非傻瓜式的建议 首先,验证未设置断点时不会发生错误 如果没有,请尝试其他一些方法:
工作表之后添加DoEvents
语句。添加
MsgBox
而不是Debug.Print上的断点。显示消息框后,尝试使用ctrl+fn+End手动断开。(在这一点上,“打破”是没有必要的,但看看你是否可以这样打破会很有趣)
工作表上设置断点。改为添加;实际上,如果只需将断点放在前一行,就没有理由将断点放在Print
语句上李>
有什么附加值吗?如果是这样,请禁用所有选项,然后一次重新启用一个选项,测试哪一个选项可能导致错误
另一个Excel/VBA小故障
当我单击运行宏的按钮时发生这种情况:
- 我首先尝试从VBE直接运行宏
- 如果失败,则在宏的第一条指令处设置断点
- 如果仍然失败,我将尝试两种方法
- 或者,在单击按钮并在第一个断点上断开后,我执行单个步骤(
SHIFT F8
),然后我可以让调试像往常一样自由运行(F5
)
到目前为止,我再也没有这个错误了
可能也不是万无一失,但值得一试。检查项目中是否引用了MicrosoftVisual Basic for Applications Extensibility
您可以在项目的Visual Basic窗口上的工具/参考菜单中进行检查
引用Visual Basic for Applications Extensibility可防止程序暂停执行:
Excel帮助具体说明:
使用可扩展性(外接程序)对象模型以编程方式对项目进行了更改。这可以防止程序暂停执行您可以继续运行或结束执行,但不能暂停执行
在对项目进行更改时,您无法单步执行代码(动态地,例如使用InsertLine等)。代码可以运行,但不能单步执行。删除某些对象(包括ActiveX对象)实际上会更改VB项目。我花了一些时间才意识到以下代码行阻止VBE进入中断模式:
Excel.ActiveSheet.DrawingObjects.Delete
如果您可以识别导致问题的代码,并且操作顺序并不重要,请将其移到脚本的末尾。首先:该链接并不表示“Microsoft说它将始终这样做”。它描述了某些条件,在这些条件下,无法进入中断模式是预期的行为。如果在您的情况下没有这些条件,那么您就有另一个问题。您要删除的工作表上是否有ActiveX控件?使用这个简单的例子,在完全关闭Excel并重新打开一个新的/空的工作簿后,是否可以重新创建错误?是的,在第一次发生错误后,从那时起就会发生。不,工作表上没有任何类型的代码或控件被删除。出于好奇,在没有设置断点的情况下是否会出现任何错误?您也可以从VBE调试菜单“编译VBA项目”中尝试。这有点像是在暗中拍摄,但您不妨尝试一下。例如,工作簿.VBProject.references.AddFromGuid无法单步通过。