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

如何修复Excel VBA运行时错误‘91’:Q列校验触发弹窗报错问题

错误原因

  • 运行时错误91为「对象变量或With块变量未设置」报错,触发原因是:当你修改的单元格不在Q2:Q3977范围内时,Application.Intersect(Range("Q2:Q3977"), Target)会返回空对象Nothing,直接拿空对象和Open/Closed做字符串比较就会触发报错。
  • 原有代码还存在隐藏问题:如果用户批量修改Q2:Q3977范围内的多个单元格,原有判断逻辑会失效。

修正后代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngIntersect As Range
    Dim cell As Range
    ' 先获取修改区域和目标范围的交集
    Set rngIntersect = Application.Intersect(Range("Q2:Q3977"), Target)
    ' 无交集直接退出,从根源避免91报错
    If rngIntersect Is Nothing Then Exit Sub
    
    ' 遍历交集中的所有单元格,判断值是否合规
    For Each cell In rngIntersect
        If cell.Value <> "Open" And cell.Value <> "Closed" Then
            MsgBox "Please Enter Justification"
            ' 可选:自动撤销不合规的输入,去掉下方注释即可生效
            ' Application.Undo
            ' 选中不合规单元格,方便用户修改
            cell.Select
            Exit For ' 只要有一个不合规就触发提示,无需继续遍历
        End If
    Next
End Sub

逻辑说明

  • 优先判断修改区域是否和目标范围Q2:Q3977有重叠,没有重叠直接终止程序运行,彻底消除91报错
  • 新增多单元格遍历逻辑,不管是修改单个单元格还是批量粘贴多个单元格,都能正常触发校验
  • 预留了自动撤销不合规输入的可选配置,可根据自身需求启用

内容的提问来源于stack exchange,提问作者M.Khalaf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:10