我是VBA新手...... 我正在尝试编写一个宏来清除名为“Product Family”的数据透视表过滤器中的所有选择,并仅选择名称包含在单元格“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
错误消息是: Object不支持此属性或方法
@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”)
答案 0 :(得分:2)
您需要设置CurrentPage
(并且您不需要先清除它)
使用代码中显示的内容,我会有类似的内容:
Sheet8.PivotTables("capbylp").PivotFields("Product Family"). _
PivotFields("MyPivotField").CurrentPage = Range("B33").Value
(为了便于阅读,分为2行)
答案 1 :(得分:1)
这有点关系;我想在用户制作时清除多个选择。显然,设置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