Excel VBA:清除数据透视表中的项目

我是VBA的新手…我试图编写一个macros来清除名为“Product Family”的数据透视表filter中的所有select,并只select名称包含在单元格“B33”中的项目。 我在一张工作表“sheet8”中引用数据透视表并尝试在“仪表板”上更改图表。

这里是代码…

Sub thisisalsotemp() ' ' thisisalsotemp Macro ' ' Sheets("Dashboard").Select ActiveSheet.ChartObjects("Chart 1").Activate Sheet8.PivotTables("capbylp").PivotFields("Product Family").PivotFields.ClearAllFilters With Sheet8.PivotTables("capbylp").PivotFields("Product Family") .PivotItems(Range("B33")).Visible = True End With End Sub 

该错误位于以下行中:Sheet8.PivotTables(“capbylp”)。PivotFields(“Product Family”)。PivotFields.ClearAllFilters

错误消息是:对象不支持此属性或方法

@SeanCheshire:谢谢你的帮助。 我觉得这更接近我想要的。 但是,我不能得到它的工作。 我玩了一下,离得更近了。 这是我有…

  Sub thisisalsotemp2() Sheets("Dashboard").Select Sheet8.PivotTables("capbylp").PivotFields("Product Family") = Range("B33") End Sub 

错误1004读取:无法设置pivottable类的pivotfields属性

如下所示:Sheet8.PivotTables(“capbylp”)。PivotFields(“Product Family”)= Range(“B33”)

你需要设置CurrentPage (你不需要先清除它)。
使用你的代码中显示的东西,我会有这样的东西:

 Sheet8.PivotTables("capbylp").PivotFields("Product Family"). _ PivotFields("MyPivotField").CurrentPage = Range("B33").Value 

(为了便于阅读,分成两行)

这有点相关; 每当用户做出select时,我都想清除多个select。 显然,设置VisibleItemsList可以做到这一点。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim xPF As PivotField Dim nms As Variant nms = Array("Calculation", _ "Rate Type", _ "xx Hierarchy") Set xPT = Application.ActiveSheet.PivotTables(1) For Each xPF In xPT.PageFields For Each nm In nms If xPF.Name Like "*" & nm & "*" Then If UBound(xPF.VisibleItemsList) > 1 Then xPF.VisibleItemsList = Array("") End If End If Next nm Next xPF End Sub