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

如何修复VBA运行时错误13(类型不匹配)

解决VBA日期筛选的运行时错误13(类型不匹配)

错误原因分析

你的代码存在两个关键问题引发类型不匹配:

  • Range("c7:c80").AutoFilter 的Field参数(字段序号)写错了:该区域仅1列,字段序号应为1,而非你写的3,参数不匹配直接触发错误。
  • 变量sDate和EDate定义为Long,若B4/D4单元格内容是文本格式的日期(而非标准日期格式),无法直接转换为长整数,也会导致类型不匹配。

修正后的代码

Sub BetweenDates()    '(Filter data between 2 dates )
    Dim sDate As Date
    Dim EDate As Date
    
    ' 先校验单元格是否为有效日期,避免转换错误
    If IsDate(Range("B4").Value) And IsDate(Range("D4").Value) Then
        sDate = Range("B4").Value
        EDate = Range("D4").Value
        
        ' 单列筛选区域的字段序号设为1,直接用日期格式拼接筛选条件
        Range("C7:C80").AutoFilter Field:=1, Criteria1:=">=" & sDate, Operator:=xlAnd, Criteria2:="<=" & EDate
    Else
        MsgBox "B4或D4不是有效的日期格式,请检查单元格内容!"
    End If
End Sub

额外注意事项

  • 确保B4和D4单元格设置为标准日期格式,避免输入文本型日期导致转换失败。
  • 如果你的实际筛选区域是多列表格(比如包含A、B、C列),可根据C列在表格中的位置调整Field参数(比如C列是第3列就设为3),但当前代码的筛选范围是单列C7:C80,字段序号必须为1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:22:18