【发布时间】:2013-10-25 20:05:30
【问题描述】:
这让我们感到困惑。我有一个标准的数据透视表,上面有一个报告过滤器,允许选择多个项目。我可以通过以下方式在报告过滤器中获取所选项目:
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 reference 似乎不够用。
【问题讨论】:
标签: excel excel-2010 pivot-table vba