这让我们很困惑。我有一个标准的数据透视表,上面有一个报告过滤器,允许选择多个项目。我可以通过以下方式获取报告过滤器中的选定项目:
Dim pi As PivotItem
For Each pi In PivotTables("MyPivot").PivotFields("MyField").PivotItems
If pi.Visible Then
Debug.Print pi.Value
End If
Next
简单的。我的同事有一个标准的数据透视表,上面有一个报告过滤器,可以选择多个项目。他尝试使用相同的代码在报告过滤器中获取选定项目:
Dim pi As PivotItem
For Each pi In PivotTables("HisPivot").PivotFields("HisField").PivotItems
If pi.Visible Then
Debug.Print pi.Value
End If
Next
并在pi.Visible
. 我们知道这Visible
是 中的一个属性pi
,因为在输入pi.
智能感知后会出现所有PivotItem
属性和方法(如您所料)。我们知道 pi 包含一个有效的 PivotItem,因为调用pi.Value
会正确打印该值(删除If
/End If
语句以让它打印该值,而不管将打印列表中的每个项目)。他的报告过滤器没有什么特别之处——它不是一个计算字段或类似的东西。的大多数其他属性PivotItem
也失败了。
有谁知道为什么PivotItem
会表现出这种行为?MSDN 参考似乎相当不充分。