VBA错误91:对象variables或未设置块variables(Excel 2013)

我们开始在工作中testingExcel 2013,并且遇到了错误代码为91(在Excel 2007中不存在)的奇怪行为。 有两个不寻常的行为,

  1. 任何时候,我修改一个范围Err.Number被设置为91,即使在最简单的macros。
  2. macros将仍然正常工作,错误不被抛出。 例如

 Sub Example1() On Error Goto DisplayError Range("A1").Clear 'Sets Err.Number to 91 Exit Sub DisplayError: Msgbox Err.Description 'Macro doesn't make it here End Sub 

或者当我明确地声明一个范围,

 Sub Example2() Dim MyRange as Range Set MyRange = Range("A1") On Error Goto DisplayError With MyRange .Clear 'Sets Err.Number to 91 End With Exit Sub DisplayError: Msgbox Err.Description 'Macro doesn't make it here End Sub 

在这两个例子中,macros将正常工作,并且单元格A1将被清除而没有任何错误消息。 Err.Number将被设置为91,而DisplayError不被调用。 完全相同的方法将在Office 2007中工作,而不会将Err.Number设置为91。

请注意,从Range读取不会改变Err.Number ,例如

 MyString = Range("A1").Value 

工作正常,不会更改Err.Number

如果任何人都可以解释这里会发生什么,那将是超级的。

编辑:精确,testing代码如下。

 Sub Example1() On Error Goto DisplayError MsgBox Err.Number 'Displays "0" Range("A1").Clear MsgBox Err.Number 'Displays "91" Exit Sub DisplayError: Msgbox Err.Description 'Macro doesn't make it here End Sub 

好吧,看起来,禁用插件是不足以阻止他们插手。 我发现运行“Excel /自动化”禁用任何导致问题,并不再发生错误。