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

VBA运行触发91错误,DataBodyRange的Rows.Count判断行报错如何解决

错误原因

报错91(对象变量或With块变量未设置)的根本原因是:当ListObject(即Excel结构化表格)没有任何数据行时,DataBodyRange属性会返回Nothing,你直接在With语句中引用该不存在的对象,访问其Rows.Count属性就会触发报错。

修复方案

1. 修正表格行删除逻辑

先判断DataBodyRange是否存在,再执行后续操作,避免访问空对象:

' 原删除表格行逻辑替换为以下内容
If Not tbl.DataBodyRange Is Nothing Then
    With tbl.DataBodyRange
      If .Rows.Count > 1 Then
        .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Delete
      End If
    End With
    tbl.DataBodyRange.Rows(1).ClearContents
Else
    ' 表格无数据行时先新增1行,避免后续操作继续报错
    tbl.ListRows.Add
End If

2. 额外代码问题修正

你当前代码还存在1个明显语法错误,后续运行也会触发报错:
排序逻辑的判断语句漏写了比较运算符,原代码If Cells(j + 11, 2).Value(i + 11, 2).Value Then需要补全比较符,示例如下(按升序排序的写法):

If Cells(j + 11, 2).Value < Cells(i + 11, 2).Value Then

另外建议补充工作表限定符,不要直接用无表名的Cells调用,避免活动表非Tirage_1时出现数据异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:07