VBA错误91:未设置对象变量或带块变量(Excel 2013)
我们开始在工作中测试Excel 2013,我遇到了奇怪的行为,错误代码为91(Excel 2007中没有出现)。有两种不寻常的行为VBA错误91:未设置对象变量或带块变量(Excel 2013),vba,excel,Vba,Excel,我们开始在工作中测试Excel 2013,我遇到了奇怪的行为,错误代码为91(Excel 2007中没有出现)。有两种不寻常的行为 每当我修改范围时,Err.Number设置为91,即使在最简单的宏中也是如此 宏仍将正常工作,不会抛出错误。例如 或者当我明确声明一个范围时 Sub Example2() Dim MyRange as Range Set MyRange = Range("A1") On Error Goto DisplayError With M
Err.Number
设置为91,即使在最简单的宏中也是如此李>
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
。完全相同的方法将在Office2007中工作,而不将Err.Number
设置为91
请注意,从某个范围读取数据不会改变错误编号
,例如
MyString = Range("A1").Value
工作正常,不会更改错误编号
如果有人能解释这里发生了什么,那就太棒了
编辑:下面是经过测试的精确代码
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”会禁用任何导致问题的原因,并且错误不再发生。您确定在调用之前不是91吗?@paxdiablo:我绝对确定。我在一个更复杂的宏中多次检查并清除了错误,以确保行为与我上面提到的一样。然后我不知所措,因为这似乎打破了“错误恢复,手动检查错误”的范例。你得等一个更有知识的人,尽管我这么说很难受:-)不能在这里复制。也许你可以更详细地解释你在做什么。例如,为什么您认为错误号设置为91?您是如何检查的?有没有连接到(例如)工作表更改的事件处理程序?很高兴听到您解决了这个问题。我自己刚开始测试Excel 2013,希望没有问题。
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