用于过滤当月的VBA代码

时间:2017-07-07 18:15:42

标签: excel vba excel-vba

我有一张工作订单,其中包含按日期排列的完整列。我试图将其过滤下来,以显示过去一直持续到当月结束的所有订单(EX:所有过去的订单 - 2017年7月底)。

我正在使用的当前代码有效,但由于某种原因不会返回7/31/2017。它将在2017年7月30日之前返回所有日期。有人可以请帮助。

Sub Macro3()
Dim dtStart As Date
Dim dtFinal As Date

dtStart = CDate(Evaluate("DATE(YEAR(NOW()),-1,1)"))
dtFinal = CDate(Evaluate("EOMONTH(NOW(),0)"))

ActiveSheet.Range("$A$1:$N$709").AutoFilter 13, ">=" & dtStart, xlAnd, "<=" & 
dtFinal, Operator:=xlFilterDynamic
End Sub

2 个答案:

答案 0 :(得分:0)

dtFinal是2017年7月31日上午12:00。您需要在8月1日之前确定最终日期,然后将过滤器从"<="更改为"<"

答案 1 :(得分:0)

您可以使用WorksheetFunction.EoMonth功能和DateSerial,并将Now替换为Date,因为您不需要浪费时间。< / p>

请尝试下面的代码而不是整个代码:

ActiveSheet.Range("A1:N709").AutoFilter 13, ">=" & DateSerial(Year(Date), -1, 1), _
                              xlAnd, "<=" & WorksheetFunction.EoMonth(Date, 0), _
                              Operator:=xlFilterDynamic