数据透视VBA代码不正确地过滤date

我试图过滤date只反映最近三个月,当前月份和未来三个月。 结果是所有年份都在这个范围内。 也由于某种原因,它取消了三月份的第二周。 我究竟做错了什么?

代码如下

For Each pi In pvt.PivotFields("Week Of").PivotItems Select Case pi.Value Case Is < DateSerial(Year(Now) + 1, Month(Now) - 3, Day(Now)) pi.Visible = False Case pi.Value > DateSerial(Year(Now) + 1, Month(Now) + 3, Day(Now)) pi.Visible = False Case Else pi.Visible = True End Select 

您的个案陈述并不一致。 第一个说:

 Case Is < ... 

你的第二个说:

 Case pi.Value > ... 

我很确定第二个也应该使用Case Is 。 不知道这是否能解决问题,但我想指出。

或者你可以重写你的代码来完全忽略Case语句:

 iEarliest = DateSerial(Year(Now) + 1, Month(Now) - 3, Day(Now)) iLatest = DateSerial(Year(Now) + 1, Month(Now) + 3, Day(Now)) For Each pi In pvt.PivotFields("Week Of").PivotItems If pi.Value > iLatest or pi.Value < iEarliest then pi.Visible = False Else pi.Visible = True End if Next