Worksheet_Change事件给出运行时错误13 - 插入行时键入不匹配

时间:2012-03-22 17:06:37

标签: excel-vba vba excel

我正在使用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事件,似乎无法找到好的文档(或者至少是文档引用了这个错误的原因)。感谢。

1 个答案:

答案 0 :(得分:5)

这是你在尝试的吗?

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

<强>后续

  
    
      

是的,这正是我所需要的!谢谢!它就像一个魅力。我不熟悉Intersect或EnableEvents选项,所以我在这里学到了很多东西 - 我很感激。 - rryanp 16秒前

    
  

INTERSECT :相交方法将返回一个范围对象,表示两个或更多范围的交集。

请参阅此链接

主题:相交方法[Excel 2003 VBA语言参考]

链接Intersect - MSDN

ENABLEEVENTS :您必须使用EnableEvents属性来防止VBA代码可能启动的任何可能的无限循环。将此属性设置为False时,VBA不会引发任何事件,Worksheet_Change事件只会运行一次。此外,您应始终确保将EnableEvents属性设置回True,以便下次正常调用事件。

HTH

西特