VBAmacros来更改数据透视表中的filter

我正在尝试自动执行每日报告,因此我想创build两个button来更改三个数据透视表的filter。 详细的button应改变显示的一天。 昨天第一个filter是第二个复位button,清除所有filter并显示所有日子。 “Resest” – 巴顿正在工作,但“昨天” – 巴顿不。

目前macros观看起来是这样的:

Private Sub CommandButton2_Click() MsgBox ActiveSheet.Range("B1") With ActiveSheet.PivotTables("Detail_Digital").PivotFields("Tag").CurrentPage = _ ACtiveSheet.Range("B1").Value End With End Sub 

我也试过PivotFilters.Add _ , Type:=xlDateYesterday但是这也不起作用。

有什么build议么?

尝试下面的代码,它应该工作,除非您的“date”在数据源的数据源和Range("B1")之间的格式不同。

注意 :尽量避免使用ActiveSheet ,而是使用引用的对象。 在下面的情况下,用Worksheets("Sheet1")表名称replaceWorksheets("Sheet1")

 Option Explicit Private Sub CommandButton2_Click() Dim PvtTbl As PivotTable Dim PvtItm As PivotItem ' set the Pivot Table Set PvtTbl = Worksheets("Sheet1").PivotTables("Detail_Digital") With PvtTbl .PivotFields("Tag").ClearAllFilters ' <-- clear all filters to "Tag" 'Debug.Print Worksheets("Sheet1").Range("B1").Value For Each PvtItm In .PivotFields("Tag").PivotItems If PvtItm.Name = Worksheets("Sheet1").Range("B1").Value Then PvtItm.Visible = True Else PvtItm.Visible = False End If Next PvtItm End With End Sub