可枢转的VBA代码未正确过滤日期

时间:2014-06-18 22:44:02

标签: sql excel vba date

我试图过滤日期以仅反映过去三个月,当前月份和接下来的3个月。我最终得到的是所有年份在该范围内的所有日期。也出于某种原因,它取消了3月的第二周。我做错了什么?

以下代码

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

1 个答案:

答案 0 :(得分:1)

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

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