我有一张工作订单,其中包含按日期排列的完整列。我试图将其过滤下来,以显示过去一直持续到当月结束的所有订单(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
答案 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