rry*_*anp 4 excel vba excel-vba
我正在使用Excel VBA并有一个workheet_change事件,如下所示:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rel_type") Then
--some code
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
当我对命名范围"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
Run Code Online (Sandbox Code Playgroud)
跟进
是的,这正是我所需要的!谢谢!它就像一个魅力.我不熟悉Intersect或EnableEvents选项,所以我在这里学到了很多东西 - 我很感激. - 16秒前的rryanp
INTERSECT:相交方法将返回一个范围对象,表示两个或更多范围的交集.
看到这个链接
主题:相交方法[Excel 2003 VBA语言参考]
ENABLEEVENTS:您必须使用EnableEvents属性来防止VBA代码可能启动的任何可能的无限循环.将此属性设置False为时,VBA不会引发任何事件,并且该Worksheet_Change事件只会运行一次.此外,您应该始终确保将EnableEvents属性设置为True以允许下次正常调用事件.
HTH
希德