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

VBA填充表格空白触发错误13,已定义数据集Base1求解决

错误13(类型不匹配)排查与解决

错误根源

触发错误13的核心问题出在If Range("Base1") = 48 Then这行代码:

  • Range("Base1")是多单元格区域(B10:H32),VBA无法直接将多值区域与单个数值48做比较,导致类型不匹配。
  • 附带逻辑问题:代码中条件满足时的过滤范围$C$11:$I$58与命名区域Base1的范围B10:H32不对应;同时Criteria1:=Array("-", "1", "=")里的"="如果是想过滤空白单元格,写法错误(空白应写"")。

修复方案

根据实际需求,分两种常见场景修改:

场景1:判断Base1区域特定单元格值为48

如果是要判断Base1区域的第一个单元格(B10)值是否为48,调整代码如下:

Sub FiltroCh()
    ' 取Base1区域首个单元格(B10)的值做判断
    If Range("Base1").Cells(1, 1).Value = 48 Then
        ' 修正过滤范围为Base1对应区域,同时调整空白过滤写法
        Range("Base1").AutoFilter Field:=1, Criteria1:=Array("-", "1", ""), Operator:=xlFilterValues
    Else
        Range("Base1").AutoFilter Field:=1
    End If
End Sub

场景2:判断Base1区域行数/列数为48

如果是要判断Base1的行数是否为48(原Base1行数为23,可能命名区域范围有误),调整代码如下:

Sub FiltroCh()
    ' 判断Base1区域的行数是否为48
    If Range("Base1").Rows.Count = 48 Then
        ' 同步修正过滤范围为对应区域
        Range("Base1").AutoFilter Field:=1, Criteria1:=Array("-", "1", ""), Operator:=xlFilterValues
    Else
        Range("Base1").AutoFilter Field:=1
    End If
End Sub

额外注意事项

  • 若需要将Base1调整为48行的区域,可通过Excel「公式」选项卡→「名称管理器」修改Base1的引用范围。
  • 如果"="确实是要过滤等于字符串"="的单元格,保留"="即可;若是过滤空白单元格,替换为""。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:36:35