将控件添加到工作表会导致“无法在中断模式下执行代码”

时间:2016-12-14 15:57:41

标签: vba excel-vba excel-2010 excel

我正在尝试使用代码在工作表中添加一个复选框:

Sub DropCheckboxOnSheet()
   ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1"
End Sub

当我运行此代码时,我确实在工作表中添加了一个复选框,但是我也收到了Excel“无法在中断模式下执行代码”的消息。我知道我的代码会在对象模型中添加一个对象,这就是它破坏的原因,但它也提示我继续选择。

如何在添加对象后告诉VBA继续?

我尝试过的: 添加DisplayAlerts=False不起作用。 MSDN没有提供任何帮助:https://msdn.microsoft.com/en-us/library/office/gg264133.aspx

1 个答案:

答案 0 :(得分:1)

我不确定这是最安全的解决方案,但是因为添加" End"杀死所有宏。我唯一真正使用它的是进度条。我会更加努力地使用"在接下来的错误恢复"是一个绑带。如果您确实使用它,请确保使用" On error goto 0"恢复默认错误处理。

Sub DropCheckboxOnSheet()
   ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1"
 End
End Sub

e.g。

Sub DropCheckboxOnSheet()
 On error resume next
   ActiveSheet.OLEObjects.Add ClassType:="Forms.CheckBox.1"
 On error goto 0
End Sub

更改子名称可能会解决您的问题。如果你在另一个打开的工作簿中有相同的子,则可能会抛出错误。