我需要修改以下代码以刷新数据透视表并更改日期过滤器,每个月的月末,我的日期过滤器中都有一个新项目,例如,本月是20190531,上一个项目是20190430,我需要取消选择20190430,然后选择下一个月的20190531我想要同样的情况,但是我取消选择了20190531并选择了新的项目20190630 ...我需要有这种动态,不要每个月手动更改
Sub PivotBraunRefresh()
Sheets("Report-Inv-Actual").Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Dt")
.PivotItems("20190430").Visible = False
.PivotItems("20190531").Visible = True
End With
End Sub
答案 0 :(得分:0)
您必须使用当月的最后一天来构建字符串,
检查是否存在这样的Sub PivotBraunRefresh()
Dim pi As PivotItem
Dim strMonthEnd As String
' last day of current month as string
strMonthEnd = Format(DateSerial(Year(Date), Month(Date), 1) - 1, "YYYYMMDD")
' refresh pivottable
Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotCache.Refresh
With Sheets("Report-Inv-Actual").PivotTables("PivotTable1").PivotFields("Dt")
On Error Resume Next
' check, if pivotfield exists
Set pi = .PivotItems(strMonthEnd)
On Error GoTo 0
If Not pi Is Nothing Then
pi.Visible = True
For Each pi In .PivotItems
If pi.Name <> strMonthEnd Then pi.Visible = False
Next pi
End If
End With
End Sub
,
将其可见性设置为true(因为始终必须至少可见1个枢轴项)
然后遍历所有其他枢纽,并将它们切换为不可见:
Workbook_Open()
如果要进一步自动化,可以将其放在{{1}}事件例程中。