我正在提取上个月的第一天和最后一天,并将过滤器应用于日期列,其中应显示这些日期之间的记录。
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
答案 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