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

VBA代码调用Range.Find与EoMonth时触发错误91,求排查解决

错误91:对象变量未设置的解决办法

你的代码触发错误91的核心原因是**Range.Find方法没有找到匹配值时会返回Nothing**,这时候直接调用.Interior.Color相当于对空对象操作,就会报错。

修正后的代码

Sub rollforward()
    Dim ua As Worksheet: Set ua = Sheets("Unit Activity Adj Tab")
    Dim ws As Worksheet: Set ws = Sheets("Assumptions")
    
    ' 先获取目标日期,同时校验有效性
    Dim targetDate As Variant
    If IsDate(ws.Range("B1").Value) Then
        targetDate = Application.WorksheetFunction.EoMonth(ws.Range("B1"), 0)
    Else
        MsgBox "Assumptions表B1单元格不是有效日期!"
        Exit Sub
    End If
    
    ' 用变量接收Find结果,避免空对象操作
    Dim foundCell As Range
    Set foundCell = ua.Range("G1:CX1").Find( _
        What:=targetDate, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        MatchCase:=False)
    
    ' 判断是否找到单元格,再执行颜色设置
    If Not foundCell Is Nothing Then
        foundCell.Interior.Color = RGB(198, 239, 206)
    Else
        MsgBox "Unit Activity Adj Tab表G1:CX1范围内未找到目标日期!"
    End If
End Sub

关键修正点

  • 增加空对象判断:用foundCell变量接收Find结果,通过If Not foundCell Is Nothing确认找到后再操作,避免直接访问空对象的属性
  • 日期有效性校验:先检查Assumptions表B1单元格是否为有效日期,防止EoMonth函数因输入非法报错
  • 明确Find参数:指定LookIn:=xlValues(按单元格值查找)、LookAt:=xlWhole(完全匹配),避免默认参数导致的查找偏差

内容的提问来源于stack exchange,提问作者B-Rye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:45:32