VBA:按名称而不是索引号引用数据透视表

标签 vba excel

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

例如,我可以这样写这一行:
With ThisWorkbook.Worksheets("Sheet1").PivotTables(1).PivotFields("InvestorNumber") End With
但我需要这样写:
With ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1").PivotFields("InvestorNumber") End With
用“下标不在范围内”以第二种方式编写错误,尽管此工作表上肯定存在“PivotTable1”并且数据透视表的名称肯定是“PivotTable1”

关于语法有什么问题的任何想法?

MSDN 说它可以通过名称来引用,但没有给出一个例子来说明你是如何做到的。

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

谢谢

最佳答案

我找到了我的问题的答案。我仍在使用索引号来引用工作表,这引发了错误。所以这不起作用:
With ThisWorkbook.Worksheets(1).PivotTables("PivotTable1").PivotFields("InvestorNumber") End With
虽然看起来这确实有效:
With ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1").PivotFields("InvestorNumber") End With
如果要在对象引用中使用名称而不是索引号,则必须为所有成员使用名称;您显然不能混合使用索引和名称。

关于VBA:按名称而不是索引号引用数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49781619/

相关文章:

vba - 对重复行求和,然后删除所有重复项

vba - Excel 2003 中的代码错误

excel - 快速简单的宏可根据文本条件删除单个单元格。

vba - 根据列和行总计计算值矩阵

python - 将 Pandas 数据框导出到 Excel 多表文件的正确方法是什么?

vba - Excel VBA宏代码不停地插入无限行

excel - Excel 的 if 语句中的三个与 (&)

excel - 将 Excel 筛选结果放入 VBA 数组

excel - excel中getpivotdata()的等效公式到谷歌表格

excel - 查找符合条件的最长字符串 - excel