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

基于单元格日期值隐藏行时出现Run-time error 13:类型不匹配问题

解决VBA日期判断类型不匹配错误(Run-time error 13)

问题描述

监控维护进度时,需要隐藏S列中日期值≥45天前的行,但运行VBA代码时触发Run-time error 13: Type mismatch错误。修改日期格式为mmddyyyy后问题仍存在,且代码仅在S18行之前有效。

用户原VBA代码

Sub Hidedatemorethan45days()
    Dim cell As Range
    For Each cell In Range("S6:S67")
        If cell.Value - Date >= 45 Then
            cell.EntireRow.Hidden = True
        Else
            cell.EntireRow.Hidden = False
        End If
    Next cell
End Sub

S列使用的嵌套IF公式

=IF($C$3="QC67",'Master records List'!BL6,IF($C$3="QC66",'Master records List'!BJ6,IF($C$3="QC65",'Master records List'!BH6,IF($C$3="QC64",'Master records List'!BF6,IF($C$3="QC63",'Master records List'!BD6,IF($C$3="QC62",'Master records List'!BB6,IF($C$3="QC61",'Master records List'!AZ6,"請輸入機號")))))))  

当C3为指定QC编号时,公式引用其他工作表的单元格;否则返回提示文本「請輸入機號」。

错误原因

  1. 非日期值参与计算:当公式返回「請輸入機號」这类文本时,cell.Value是文本类型,无法与Date(日期类型)做减法运算,触发类型不匹配错误。
  2. 文本格式的日期:部分引用的单元格可能是文本格式的日期(而非真正的日期序列值),同样会导致类型不匹配。
  3. 逻辑错误:原代码cell.Value - Date >=45逻辑颠倒——日期在45天前的话,cell.Value比当前日期小,差值为负数,永远无法满足≥45的条件。

修复后的VBA代码

Sub Hidedatemorethan45days()
    Dim cell As Range
    Dim cellDate As Date
    
    For Each cell In Range("S6:S67")
        ' 先重置行的显示状态
        cell.EntireRow.Hidden = False
        
        ' 仅处理可识别为日期的内容
        If IsDate(cell.Value) Then
            cellDate = CDate(cell.Value)
            ' 判断日期是否早于45天前
            If Date - cellDate >= 45 Then
                cell.EntireRow.Hidden = True
            End If
        End If
    Next cell
End Sub

代码说明

  • IsDate(cell.Value):过滤非日期内容,避免文本值触发类型不匹配错误。
  • CDate(cell.Value):将文本格式的日期转换为标准日期类型,确保计算准确性。
  • 修正逻辑:用Date - cellDate >=45判断日期是否在45天前,符合业务需求。
  • 重置状态:先恢复行的显示,再根据条件隐藏,避免之前的隐藏状态残留。

额外建议

  • 检查Master records List工作表中被引用的单元格(BL6、BJ6等),确保这些单元格设置为日期格式而非文本格式。
  • 如果存在非标准格式的文本日期,可以在CDate前添加文本处理逻辑(比如提取年月日后用DateValue转换)。

内容的提问来源于stack exchange,提问作者Jay Jays work

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:53:08