应用过滤器的日期小于等于当月的最后一天不起作用

时间:2018-02-27 10:19:30

标签: vba excel-vba excel

我正在提取上个月的第一天和最后一天,并将过滤器应用于日期列,其中应显示这些日期之间的记录。

 first_dy = DateSerial(Year(Date), Month(Date) - 1, 1)
   last_dy = DateSerial(Year(Date), Month(Date), 0)
   With Worksheets("Sheet1")
        .AutoFilterMode = False
        .Range("A1:R100000").Select
        Selection.AutoFilter

   Worksheets("Sheet1").Range("A1").AutoFilter Field:=15, Criteria1:="<" & last_dy, Operator:=xlAnd, Criteria2:=">" & first_dy 

上面的代码显示零记录。但是,当我仅应用超过上个月第一天的标准时,它会向我显示该月和当月的正确记录。以下代码供参考:

  Worksheets("Sheet1").Range("A1").AutoFilter Field:=15, Criteria1:=">=" & first_dy

但是,当我将过滤器应用于大于上个月最后一天的记录时,它没有向我显示任何记录。如果我使用下面的代码,代码工作正常。它只显示上个月最后一天的记录:

Worksheets("Sheet1").Range("A1").AutoFilter Field:=15, Criteria1:="=" & last_dy

1 个答案:

答案 0 :(得分:1)

使用CLng()

Dim first_dy As Variant, last_dy As Variant

first_dy = DateSerial(Year(Date), Month(Date) - 1, 1)
last_dy = DateSerial(Year(Date), Month(Date), 0)
With Worksheets("Sheet1")
    .Range("A1").AutoFilter Field:=15, Criteria1:="<" & CLng(last_dy), Operator:=xlAnd, Criteria2:=">" & CLng(first_dy)
End With