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

标签 excel vba

我正在使用 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

跟进

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 语言引用]

链接:Intersect - MSDN

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

HTH

席德

关于excel - Worksheet_Change 事件给出运行时错误 13 - 插入行时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827060/

相关文章:

c# - 动态解析 Excel 工作表(未提供单元格范围,因为数据在工作表中的位置可能会动态变化)

c# - Range.Value 在 VBA 和 C# 中产生不同的结果

excel - 如何从一个 Excel 工作簿调用另一个 Excel 工作簿中特定于工作表的宏?

excel - 从 Web 服务器保存 Excel 文件时如何解决 [1] IE 错误?

Excel VBA将数组数组传递给函数

excel - 仅当 Windows 任务计划程序打开文件时才运行 Excel VBA

vba - 向多个收件人发送电子邮件 vba

python - 从 Python 到 Excel 的 Excel 公式格式

vba - 使用起始单元格地址和结束单元格地址从同一张表中获取范围

vba - 非连续范围 : VBA 的奇怪单元格地址行为