复制谷歌VBA代码调整Excel表格大小遇无效引用错误求助
问题分析与修正
你的代码出现「Invalid or Unqualified reference」错误,核心是3个引用逻辑问题:
- 已经把工作表赋值给
wst对象,却还用Worksheets(wst)调用——Worksheets集合只接受索引数字或工作表名称字符串,直接用wst即可。 tblMSFT已经是ListObject表格对象,不需要再通过ListObjects(tblMSFT)获取,直接使用该对象本身。- 原With语句的嵌套逻辑完全混乱,把Resize方法、Range属性错误堆叠,导致引用无法识别。
下面是修正后的代码,逻辑更清晰且能正常运行:
Sub resize() Dim wst As Worksheet Dim tblMSFT As ListObject Dim lastDataRow As Long ' 获取目标工作表 Set wst = Sheets("MASTER - Supplier File") ' 获取目标表格 Set tblMSFT = wst.ListObjects("MSF_Table") ' 定位表格首列最后一行有数据的行号 lastDataRow = wst.Cells(wst.Rows.Count, tblMSFT.ListColumns(1).Index).End(xlUp).Row ' 调整表格范围:从表头行到最后一行数据 tblMSFT.Resize wst.Range(tblMSFT.HeaderRowRange.Row & ":" & lastDataRow) End Sub
补充说明:你谷歌搜到的原始代码本身就有语法问题(Resize后漏写括号),且嵌套写法极易出错。修正后的代码先明确找到数据最后一行,再通过表格的Resize方法重新定义范围,彻底规避了引用错误。
内容的提问来源于stack exchange,提问作者craig crowhurst
相关产品推荐
相关产品推荐

