为何VBA透视表过滤代码报错‘对象不支持该属性或方法’?
报错原因及解决方法
报错原因
直接原因是**PivotField对象不存在datasheet属性或方法**,你写错了透视表字段的过滤语法,属于对VBA透视表对象模型的用法误解。
解决方法
透视表字段的过滤方式取决于它在透视表中的位置(页字段/行/列字段),对应两种不同的实现代码:
情况1:「Chapter_Desc」是页字段(顶部的筛选字段)
使用CurrentPage属性直接设置筛选值:
Dim datasheet As Worksheet Dim PT As PivotTable Dim field As PivotField Set datasheet = Sheets(1) Set PT = datasheet.PivotTables("PivotTable2") Set field = PT.PivotFields("Chapter_Desc") field.ClearAllFilters ' 设置页字段的筛选值为Georgia field.CurrentPage = "Georgia" Set field = Nothing Set PT = Nothing
情况2:「Chapter_Desc」是行字段或列字段
需要遍历字段的所有选项,仅将目标项设置为可见:
Dim datasheet As Worksheet Dim PT As PivotTable Dim field As PivotField Dim pi As PivotItem Set datasheet = Sheets(1) Set PT = datasheet.PivotTables("PivotTable2") Set field = PT.PivotFields("Chapter_Desc") field.ClearAllFilters ' 遍历所有选项,只显示Georgia For Each pi In field.PivotItems pi.Visible = (pi.Value = "Georgia") Next pi Set pi = Nothing Set field = Nothing Set PT = Nothing
补充判断字段类型的方法
如果不确定字段的位置,可以通过Orientation属性判断:
xlPageField:页字段xlRowField:行字段xlColumnField:列字段
内容的提问来源于stack exchange,提问作者Larne Armstrong
相关产品推荐
相关产品推荐

