【问题标题】:VBA: Referencing a Pivot Table by name rather than index numberVBA:按名称而不是索引号引用数据透视表
【发布时间】:2018-04-11 17:55:46
【问题描述】:

我有一个简单的问题。在 VBA 中通过 name 而不是索引号引用数据透视表的语法是什么?

例如,我可以这样写:

With ThisWorkbook.Worksheets("Sheet1").PivotTables(1).PivotFields("InvestorNumber") End With

但我需要这样写:

With ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1").PivotFields("InvestorNumber") End With

虽然“数据透视表1”肯定存在于此工作表上并且数据透视表的名称肯定是“数据透视表1”,但以第二种方式编写错误-“下标不在范围内”

对语法有什么问题有任何想法吗?

MSDN 说它可以通过名称来引用,但没有给出你如何做到这一点的示例。

https://msdn.microsoft.com/en-us/vba/excel-vba/articles/pivottables-object-excel

谢谢

【问题讨论】:

  • 它肯定可以工作 (msdn.microsoft.com/en-us/vba/excel-vba/articles/…)。提供的链接中有一个示例,使用名称参考。
  • 您是否有一个免费的宏 .xlsx 可以与可以重现问题的虚拟数据共享?以上看起来是正确的。

标签: vba excel


【解决方案1】:

我找到了问题的答案。我仍在使用索引号来引用工作表,这引发了错误。所以这不起作用:

With ThisWorkbook.Worksheets(1).PivotTables("PivotTable1").PivotFields("InvestorNumber") End With

虽然看起来这确实有效:

With ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1").PivotFields("InvestorNumber") End With

如果您想在对象引用中使用名称而不是索引号,则必须为所有成员使用名称;您显然不能混合使用索引和名称。

【讨论】:

  • 或者您实际的第一张工作表不是工作簿中的“Sheet1”?尚未测试,但我希望您能够使用 Index。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多