【发布时间】:2017-04-02 18:19:36
【问题描述】:
到目前为止,我还没有将 VBA 与数据透视表一起使用。现在我想更新(刷新)2 个数据透视表并将日历周的过滤器设置为最后一个完整的一周。
我的问题/问题是:
1) 我真的需要.ClearAllFilters 行吗?或者我可以在没有它的情况下设置过滤器吗?
2)我可以在设置过滤器之前检查我的表中是否存在相应的项目(例如第 13 周)吗?否则,我会尝试过滤(尚)不存在的东西。
3)我是否以正确的方式编写代码,或者是否有更短/更好的方法?例如。我不确定With 中的With 在这里是否有意义。
我的代码:
Dim varLastSunday As Date, varWeekNumber As Integer
varLastSunday = Date - Weekday(Date, vbUseSystemDayOfWeek)
varWeekNumber = CLng(Format(varLastSunday, "ww"))
Application.ScreenUpdating = False
With Worksheets(4)
.Range("StartColumns").EntireColumn.Hidden = False
.PivotTables("PivotTable9").PivotCache.Refresh
.PivotTables("PivotTable9").PivotFields("WEEK_NUMBER").ClearAllFilters
.PivotTables("PivotTable9").PivotFields("WEEK_NUMBER").CurrentPage = varWeekNumber
.PivotTables("PivotTable10").PivotCache.Refresh
.PivotTables("PivotTable10").PivotFields("week").ClearAllFilters
.PivotTables("PivotTable10").PivotFields("week").CurrentPage = varWeekNumber
End With
Application.ScreenUpdating = True
【问题讨论】:
-
1.做一个测试 2. 可能是的,使用 DLookup() 作为一个选项 3.
With可以嵌套,但看不到你为什么会在这段代码中。
标签: vba excel pivot-table