首页 文章

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

提问于
浏览
2

我是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

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

@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”)

2 回答

  • 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
    
  • 2

    你需要设置 CurrentPage (你不应该先清除它) .
    使用代码中显示的内容,我会有类似的东西:

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

    (为便于阅读,分为2行)

相关问题