我记录了这个:
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Min Closed Mth")
.PivotItems("2016-10").Visible = False
.PivotItems("2017-11").Visible = True
End With
每个月,我都会将此报告作为运行13运行。这是本月运行的。我们减去两个月后再添加一个月。我希望这是有道理的。无论如何,虽然这段代码适用于12月,但每个月前进都没有任何好处。我还要说明,每年的1月都不同。
我想出了这个:
Sub Update_Pivots()
Dim thisMonth As Integer
Dim lastMonth As Integer
Dim thisYear As Integer
If Month(Date) = 1 Then
thisYear = Year(Date) - 1
thisMonth = Month(Date) - 1
lastMonth = Month(Date) - 2
Else
thisYear = Year(Date)
thisMonth = Month(Date) - 1
lastMonth = Month(Date) - 2
End If
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Min Closed Mth")
.PivotItems("[thisYear].&[-]&.[lastMonth]").Visible = False
.PivotItems("[thisYear].&[-]&.[thisMonth]").Visible = True
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Min Closed Mth")
.PivotItems("[thisYear].&[-]&.[lastMonth]").Visible = False
.PivotItems("[thisYear].&[-]&.[thisMonth]").Visible = True
End With
End Sub
我得到一个运行时'1004错误 无法获取PivotField类的PivotItems属性。
没关系,虽然日期适用于1月,但它们不适用于2月,因为这个月和年应该是最新的,但是lastMonth和year应该是前一年。
这是我的第一篇文章。我一直在用VBA做很多简单的事情但是现在因为这个原因,我被要求做更多。
感谢帮助。
答案 0 :(得分:1)
只需使用DateAdd
计算正确的月份,然后将其格式化为"yyyy-mm"
:
Sub Update_Pivots()
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Min Closed Mth")
.PivotItems(Format(DateAdd("m", -14, Date),"yyyy-mm")).Visible = False
.PivotItems(Format(DateAdd("m", -1, Date),"yyyy-mm")).Visible = True
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Min Closed Mth")
.PivotItems(Format(DateAdd("m", -14, Date),"yyyy-mm")).Visible = False
.PivotItems(Format(DateAdd("m", -1, Date),"yyyy-mm")).Visible = True
End With
End Sub