You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA运行时错误13:删除合并单元格数据触发报错求助

问题分析与解决

Run-time error '13'(类型不匹配)的原因是:当你删除多个单元格时,Target会变成一个多单元格区域,此时Target.Value返回的是数组而非单个值,Select Case无法处理数组,就会触发类型不匹配错误。另外你的代码存在重复判断,可以优化。

修改后的代码

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 禁止事件触发,避免隐藏行时重复触发本过程
    Application.EnableEvents = False
    
    ' 处理多单元格操作,直接退出(只关注单个单元格的修改)
    If Target.Cells.Count > 1 Then GoTo Cleanup
    
    Dim intersectU8 As Range
    Dim intersectG22 As Range
    
    ' 获取目标区域与监控区域的交集
    Set intersectU8 = Application.Intersect(Target, Range("U8:Y8"))
    Set intersectG22 = Application.Intersect(Target, Range("G22:K22"))
    
    ' 处理U8:Y8区域的修改
    If Not intersectU8 Is Nothing Then
        Select Case Target.Value
            Case "Owner"
                Rows("11:11").EntireRow.Hidden = True
                Rows("18:18").EntireRow.Hidden = False
            Case "Renter"
                Rows("11:11").EntireRow.Hidden = False
                Rows("18:18").EntireRow.Hidden = True
            Case ""
                Rows("11:11").EntireRow.Hidden = False
                Rows("18:18").EntireRow.Hidden = False
        End Select
    End If
    
    ' 处理G22:K22区域的修改
    If Not intersectG22 Is Nothing Then
        Select Case Target.Value
            Case "Mail"
                Rows("23:23").EntireRow.Hidden = True
            Case "E-Billing", ""
                Rows("23:23").EntireRow.Hidden = False
        End Select
    End If

Cleanup:
    ' 恢复事件触发
    Application.EnableEvents = True
End Sub

关键修改说明

  • 多单元格判断:增加If Target.Cells.Count > 1 Then GoTo Cleanup,删除多个单元格时直接跳过后续逻辑,避免类型不匹配。
  • 合并重复判断:将原代码中两次判断U8:Y8的逻辑合并,减少冗余代码。
  • 优化交集判断:直接用Application.Intersect(Target, 监控区域),无需额外转换Target.Address,更高效可靠。
  • 事件控制:添加Application.EnableEvents = False,防止隐藏行操作触发Worksheet_Change事件,造成循环调用;最后必须恢复事件触发,否则后续其他事件也会失效。
  • 简化Case分支:将""和E-Billing合并为同一个分支,精简代码。

内容的提问来源于stack exchange,提问作者Kate Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:35:08