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

使用Range.find以日期为参数查找行号时遇运行时错误91的问题

解决VBA日期查找时的运行时错误91问题

错误原因分析

  • 运行时错误91:当Range.Find()方法未找到匹配值时,会返回Nothing,此时直接调用.row属性就会触发该错误——你无法访问一个不存在对象的属性。
  • 日期匹配失效:Excel中的日期本质是双精度浮点数,若Find方法参数设置不当(比如未指定查找类型、匹配方式),会导致明明存在的日期无法被匹配到。

修正后的代码

Dim i As Integer
Dim tb1_length As Integer
Dim v1 As Variant
Dim foundCell As Range

' 先获取tb1的实际行数,替换成你需要的逻辑
tb1_length = Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To tb1_length
    v1 = Range("A" & i).Value
    ' 重置查找对象,避免上一次结果干扰
    Set foundCell = Nothing
    ' 配置Find参数确保日期精准匹配
    Set foundCell = Range("D1:D20").Find( _
        What:=v1, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        MatchCase:=False)
    
    ' 先判断是否找到匹配项,再执行后续操作
    If Not foundCell Is Nothing Then
        MsgBox "找到的行号:" & foundCell.Row
    Else
        MsgBox "未找到日期:" & v1
    End If
Next i

关键说明

  • 对象存在性判断:每次查找后先检查foundCell是否不为Nothing,彻底避免错误91。
  • 精准匹配参数:
    • LookIn:=xlValues:基于单元格实际存储的数值查找,而非显示的文本格式,确保日期数值层面的匹配。
    • LookAt:=xlWhole:强制匹配整个单元格内容,避免部分匹配导致的误判。
  • 显式变量声明:提前声明所有变量,提升代码稳定性和可读性,这是VBA的通用最佳实践。

内容的提问来源于stack exchange,提问作者felipe kreft batista

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:38:24