当我在excel VBA中有sheet.add或sheets.delete时,这种情况越来越多。搜索和搜索后,我终于找到了official Microsoft支持页面。我的问题是,有没有人知道为什么我可以一遍又一遍地完成这段代码,然后突然它开始做微软所说的一直做的事情,有没有办法解决它?
Sub foo()
Sheets.add
debug.print "sheet added" 'breakpoint here
End sub
就这么简单。你将无法重新创建它,因为我要问的问题是它最初不会发生。它一遍又一遍地工作,然后随机呈现linked Microsoft支持页面中描述的错误。
答案 0 :(得分:0)
以下是一些不是万无一失的建议,
首先,验证如果未设置断点,则不会发生错误。
如果没有,请尝试其他一些事项:
DoEvents
Sheets.Add
语句
MsgBox
上使用Debug.Print
代替断点。显示消息框后,尝试使用 ctrl + fn + End 手动中断。 (此时,“破解”不是必要的,但看看你是否可以打破这种方式会很有趣)Sheets.Add
上设置一个断点;实际上,如果您可以将断点放在前一行,则没有理由将断点放在Print
语句中。 答案 1 :(得分:0)
另一个Excel / VBA故障。
当我单击运行宏的按钮时发生在我身上:
SHIFT F8
),然后可以像往常一样自由运行调试({{1} })。到目前为止,我不再遇到此错误。
可能也不是万无一失,但值得一试。
答案 2 :(得分:0)
检查是否在项目中引用/使用了Microsoft的 Visual Basic for Applications Extensibility 。这样可以防止程序暂停执行:
Excel帮助具体说:
使用可扩展性(附加)对象模型以编程方式对项目进行了更改。这样可以防止程序中止执行。 您可以继续运行或结束执行,但不能暂停执行。
在对项目进行更改时(动态地例如使用InsertLine等),您无法单步执行代码。该代码可以运行,但不能单步执行。
答案 3 :(得分:0)
删除某些对象(包括ActiveX对象)实际上会更改VB项目。我花了一些时间才意识到下面的代码行阻止了VBE进入中断模式:
Excel.ActiveSheet.DrawingObjects.Delete
如果您可以识别出引起问题的代码,并且操作顺序并不重要,请将其移至脚本末尾。