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

时间:2018-04-11 17:55:47

标签: excel vba excel-vba

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

例如,我可以像这样编写这一行:

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

由于

1 个答案:

答案 0 :(得分:0)

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

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

虽然看起来确实有效:

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

如果要在对象引用中使用名称而不是索引号,则必须为所有成员使用名称;你显然不能使用各种索引和名称。