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

VBA中Resize Table报错:Object Variable error,求问题排查

问题排查与修正方案

错误根源分析

  • 对象未初始化提前调用:代码开头Set ob = shtDest.ListObjects("Table1")执行时,shtDest还未被赋值(此时为Nothing),直接访问它的ListObjects成员必然触发「对象变量或With块变量未设置」错误。
  • 变量未赋值:Lrow1全程未被赋予任何有效值,Resize时会传递空值引发错误。
  • 表格Resize语法错误:ob.Resize ob.Range.Resize(Lrow1)不符合ListObject.Resize的语法要求,该方法需要传入一个完整的Range对象来定义表格的新范围。

修正后的完整代码

Sub addtoconfirmdatabase()
    Const WB_PATH As String = "S:\Goods Ordering\Confirmed Orders.xlsx"
    
    Dim srcSht As Worksheet, wb As Workbook, shtDest As Worksheet, i As Long
    Dim ob As ListObject
    Dim newRow As ListRow
    
    ' 建议替换为具体工作表名称,避免ActiveSheet带来的不确定性
    Set srcSht = ActiveSheet
    
    For i = 2 To srcSht.Range("A" & srcSht.Rows.Count).End(xlUp).Row
        If srcSht.Cells(i, 1) = "x" Then
            ' 首次匹配时打开目标工作簿并初始化表格对象
            If shtDest Is Nothing Then
                Set wb = Workbooks.Open(Filename:=WB_PATH)
                Set shtDest = wb.Sheets("Orders Confirmed")
                Set ob = shtDest.ListObjects("Table1")
            End If
            
            ' 用ListObject的ListRows.Add直接添加行,自动扩展表格(无需手动Resize)
            Set newRow = ob.ListRows.Add(AlwaysInsert:=True)
            srcSht.Cells(i, 2).Resize(1, 86).Copy newRow.Range
            
            ' 标记已处理行
            srcSht.Cells(i, 7).Interior.ColorIndex = 46
        End If
    Next i
    
    ' 保存并关闭目标工作簿(如果已打开)
    If Not wb Is Nothing Then
        wb.Close SaveChanges:=True
    End If
    
    Sheets("Quote Database").Range("P1:R1").ClearContents
    MsgBox "你的订单已添加至确认订单数据库。"
End Sub

关键修改说明

  1. 延迟初始化表格对象:将Set ob的代码移至目标工作簿打开、shtDest赋值完成后,确保对象已存在再调用其成员。
  2. 使用ListObject原生方法添加行:用ListRows.Add直接向表格插入新行,表格会自动扩展范围,完全替代手动Resize的需求,更稳定且符合Excel表格的设计逻辑。
  3. 合并重复判断:将两个判断srcSht.Cells(i,1)="x"的逻辑合并,减少冗余代码。
  4. 优化对象引用:添加newRow变量明确指向新增的表格行,代码可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:18:18