我们开始在工作中测试Excel 2013,并且遇到错误代码为91(在Excel 2007中未发生)的奇怪行为。有两种不同寻常的行为:
Err.Number
,即使在最简单的宏中也将其设置为91。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
或者当我明确声明一个Range时,
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
在这两个示例中,宏将正确运行,并且A1
将清除单元格而不会出现任何错误消息。Err.Number
将被设置为91,而DisplayError
不会被调用。完全相同的方法无需设置Err.Number
为91就可以在Office 2007中使用。
请注意,从范围读取不会更改Err.Number
,例如
MyString = Range("A1").Value
可以正常工作,并且不会更改Err.Number
。
如果有人可以解释这里发生的事情,那将是超级好。
编辑:下面是经过测试的精确代码。
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 / automation”禁用了导致问题的任何原因,并且不再发生该错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句