【问题标题】:Resizing table range error "Method 'Range' of Object '_Global' failed"调整表范围错误\“对象\'_Global\'的方法\'Range\'失败\”
【发布时间】:2022-10-17 00:41:10
【问题描述】:

我有代码试图引用一个表并调整它的大小。

它首先检查表是否应用了过滤器并将其删除。

我将跳过关键位之前的代码。我声明了您在此代码中看不到的变量,但相关声明包含在下面。还尝试使用 Option Explicit 声明然后未声明。

Dim ExcelTool As Workbook: Set ExcelTool = Workbooks.Open(ExcelTool_Template_Path1 & 
ExcelTool_Template_Name1, ReadOnly:=True)
Dim ExcelToolRates As Worksheet: Set ExcelToolRates = ExcelTool.Worksheets("Rates")
Dim RatesTable As ListObject: Set RatesTable = ExcelToolRates.ListObjects("Table1")
If RatesTable.AutoFilter.FilterMode Then
    RatesTable.AutoFilter.ShowAllData
End If

ExcelToolRates.Activate
RatesTable.Resize Range(3)

其他一切都有效,包括使用对象变量“RatesTable”去除过滤器。

在调整大小时会出现错误

“对象'_Global'的方法'范围'失败”

当我将范围转换为表格时,“Table1”是默认表格名称,它位于此工作簿中。

代码从同一 Excel 实例中的不同工作簿运行。我尝试使包含引用表的工作簿处于活动状态并使用此行,但同样的错误:

ActiveWorkbook.Sheets("Rates").ListObjects("Table1").Resize Range(3)

按照克里斯的建议,我尝试了

RatesTable.Resize RatesTable.DatabodyRange.Resize(3)

这会产生以下错误:

【问题讨论】:

  • RatesTable.Resize Range(3) 行中,您希望Range(3) 做什么?
  • 嗨,克里斯,我认为它会将表格的大小调整为 3 行,这样我就可以在粘贴新数据之前保留标题和几行(这可能会或可能不会比以前的数据集少,因此摆脱了大部分旧数据数据行的好衡量)。通过谷歌找到的几篇文章表明这​​是我需要做的,但我可能是愚蠢的......

标签: excel vba datatable resize listobject


【解决方案1】:

listobject.resize 的参数需要是引用新表数据范围的范围对象。

就像是

RatesTable.Resize RatesTable.DatabodyRange.Resize(3)

【讨论】:

  • 嗨,克里斯,感谢您的快速响应和帮助。我尝试了您的代码行,但它返回了我添加到问题中的错误(我无法弄清楚如何将错误图片添加到此评论中)。有任何想法吗?谢谢!
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多