我有一个简单的问题。在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
由于
答案 0 :(得分:0)
我找到了问题的答案。我仍然使用索引号来引用工作表,这是抛出错误。所以这不起作用:
With ThisWorkbook.Worksheets(1).PivotTables("PivotTable1").PivotFields("InvestorNumber")
End With
虽然看起来确实有效:
With ThisWorkbook.Worksheets("Sheet1").PivotTables("PivotTable1").PivotFields("InvestorNumber")
End With
如果要在对象引用中使用名称而不是索引号,则必须为所有成员使用名称;你显然不能使用各种索引和名称。