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

Excel VBA删除各工作表表格行列触发运行时错误91求助

解决VBA宏运行时错误91的问题

错误原因

运行时错误91触发的核心原因是:当目标表格只有表头、没有数据行时,tbl.DataBodyRange会返回Nothing(空对象)。此时直接通过With tbl.DataBodyRange访问.Rows.Count,就会触发「对象变量或With块变量未设置」的错误。

修复后的代码

Sub ClearTables()
    Dim sht As Worksheet
    Dim tbl As ListObject
    Dim tblData As Range
    
    For Each sht In Worksheets
        If sht.Tab.Color = 16247773 Then
            For Each tbl In sht.ListObjects
                ' 捕获数据区域对象,提前判空避免错误
                Set tblData = tbl.DataBodyRange
                
                ' 先处理多余列:直接操作表格列集合,无需依赖数据行
                If tbl.ListColumns.Count > 3 Then
                    tbl.ListColumns(4).Range.Resize(, tbl.ListColumns.Count - 3).Delete
                End If
                
                ' 仅当存在数据行时,处理多余行和清除内容
                If Not tblData Is Nothing Then
                    If tblData.Rows.Count > 1 Then
                        tblData.Offset(1).Resize(tblData.Rows.Count - 1).Delete
                    End If
                    tblData.ClearContents
                End If
            Next tbl
        End If
    Next sht
End Sub

关键修改说明

  • 空对象预判:用Set tblData = tbl.DataBodyRange将数据区域赋值给变量,再通过Not tblData Is Nothing判断是否存在数据行,彻底规避空对象访问错误。
  • 列操作优化:直接操作tbl.ListColumns(表格列集合)处理多余列,即使表格没有数据行,表头列始终存在,能正常执行删除操作。
  • 行操作安全化:仅当确认存在数据行时,才执行删除多余行和清除内容的逻辑,避免触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:55:13