首页 文章

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

提问于
浏览
4

我正在使用Excel VBA并有一个workheet_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 回答

  • 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
    

    FOLLOWUP

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

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

    看到这个链接

    Topic: Intersect Method [Excel 2003 VBA Language Reference]

    LinkIntersect - MSDN

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

    HTH

    希德

相关问题