我正在尝试从 2 个单元格输入(开始日期、结束日期)更新我的数据透视表(日期)中的过滤器,以便我设置一个开始日期(例如 01/01/12)和一个结束日期(28/03/12)表将自动应用过滤器,仅显示范围内的日期。为此,我在网上找到了一些 VBA 代码片段:
Option Explicit
Sub FilterPivotDates()
'
Dim dStart As Date
Dim dEnd As Date
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Application.ScreenUpdating = False
On Error Resume Next
dStart = Sheets("Pivot").Range("StartDate").Value
dEnd = Sheets("Pivot").Range("EndDate").Value
Set pt = ActiveSheet.PivotTable2
Set pf = pt.PivotFields("Week")
pt.ManualUpdate = True
pf.EnableMultiplePageItems = True
For Each pi In pf.PivotItems
pi.Visible = True
Next pi
For Each pi In pf.PivotItems
If pi.Value < dStart Or pi.Value > dEnd Then
pi.Visible = False
End If
Next pi
Application.ScreenUpdating = False
pt.ManualUpdate = False
Set pf = Nothing
Set pt = Nothing
End Sub
我在我的工作表的 Modules 文件夹和工作表“Pivot”中放置了“Option Explicit”。我将范围名称“StartDate”和“EndDate”分配给具有日期输入的两个单元格,并为宏分配了一个按钮。数据透视表名为“数据透视表”,应过滤的相应字段名为“周”。但是当我按下按钮时,什么也没有发生......有人在代码中看到错误还是我应该以不同的方式实现它?
预先感谢!