vba - Excel VBA : clear items in pivot table

标签 vba excel filter pivot-table

我是 VBA 新手... 我正在尝试编写一个宏,该宏将清除名为“产品系列”的数据透视表过滤器中的所有选择,并仅选择名称包含在单元格“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("产品系列").PivotFields.ClearAllFilters

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

@SeanCheshire:感谢您的帮助。我觉得这更接近我想要的。但是,我无法让它工作。我稍微玩了一下,就更接近了。这就是我所拥有的...

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

错误 1004 读取:无法设置数据透视表类的数据透视字段属性

行中:Sheet8.PivotTables("capbylp").PivotFields("Product Family") = Range("B33")

最佳答案

您需要设置CurrentPage(并且您不需要先清除它)。
使用代码中显示的内容,我会得到类似的内容:

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

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

关于vba - Excel VBA : clear items in pivot table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885167/

相关文章:

excel - 如何对(已弃用的)Excel V4 宏进行逆向工程?

r - 在 Shiny 中使用过滤数据表

excel - 如何避免在 Excel VBA 中使用 Select

excel - 当用户输入超过预期的参数时,强制 VBA 中的 UDF 显示 MsgBox?

vb.net - 关闭 Windows 窗体应用程序和 excel.exe 进程如何交互(可能通过垃圾收集器)?

excel - EXP函数Excel

r - 如何过滤数据框

javascript - 使用过滤器返回对象中的属性值

excel - 使用 Excel VBA 创建 Word 应用程序 : Run-time error '429' : ActiveX component can't create object

SQL 2005 插入时更新列