我正在使用 Excel VBA 并有一个 worksheet_change 事件,如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rel_type") Then
--some code
End If
End Sub
当我更改命名范围“rel_type”时,该代码效果很好。但是,如果我在电子表格中的其他位置插入一行,则会出现运行时错误 13 - 该 Sub 的第一行类型不匹配。有人知道解决方法吗?我对 Worksheet_Change 事件不太熟悉,并且似乎找不到好的文档(或者至少引用了为什么会发生此错误的文档)。谢谢。
最佳答案
这就是你正在尝试的吗?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
If Not Intersect(Target, Range("rel_type")) Is Nothing Then
Application.EnableEvents = False
'--some code
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
跟进
block 引用> block 引用>Yes, that's exactly what I needed! Thanks! It worked like a charm. I was not familiar with Intersect or the EnableEvents option, so I learned a lot here--I appreciate it. – rryanp 16 secs ago
INTERSECT:Intersect 方法将返回一个 Range 对象,表示两个或多个范围的交集。
查看此链接
主题:相交法 [Excel 2003 VBA 语言引用]
ENABLEEVENTS:您必须使用 EnableEvents 属性来防止 VBA 代码可能引发的任何可能的无限循环。当您将此属性设置为
False
时,VBA 不会引发任何事件并且Worksheet_Change
事件只会运行一次。另外,您应该始终确保将 EnableEvents 属性设置回True
使下次事件能够正常调用。HTH
席德
关于excel - Worksheet_Change 事件给出运行时错误 13 - 插入行时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827060/