用于筛选当前月份的VBA代码

用于筛选当前月份的VBA代码,vba,excel,Vba,Excel,我有一张工作单,上面有一列填写日期。我正在尝试对其进行筛选,以显示从过去到本月底的所有订单(例如:2017年7月底的所有过去订单) 我正在使用的当前代码有效,但由于某些原因,将不会返回2017年7月31日。它将返回2017年7月30日之前的所有日期。有人能帮忙吗 Sub Macro3() Dim dtStart As Date Dim dtFinal As Date dtStart = CDate(Evaluate("DATE(YEAR(NOW()),-1,1)")) dtFinal = CD

我有一张工作单,上面有一列填写日期。我正在尝试对其进行筛选,以显示从过去到本月底的所有订单(例如:2017年7月底的所有过去订单)

我正在使用的当前代码有效,但由于某些原因,将不会返回2017年7月31日。它将返回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
Sub-Macro3()
开始日期
最终日期
dtStart=CDate(评估(“日期(年)(现在(),-1,1)”)
dtFinal=CDate(评估(“EOMONTH(NOW(),0)”)

ActiveSheet.Range(“$A$1:$N$709”)。自动筛选13,“>=”&dtStart,xlAnd,“
dtFinal
是2017年7月31日上午12:00。您希望将最终日期定为8月1日,然后将筛选从
”更改。您可以使用
工作表函数.EoMonth
函数和
日期序列,现在就把你的
换成
日期
,因为你不需要浪费时间

请尝试以下行,而不是您的整个代码:

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

xlAnd,“这很有效!我拥有的数据来自Dynamics AX集合,所以它列出的时间是早上7点,而不是12点(我真的不需要担心时间,只需要日期)。我只需要更正一下。谢谢!我尝试了这个,但它仍然没有出现在清单7/31中。@DavidNeedham解决方案对我有效。谢谢。@Emartin1863因为你的单元格有时间值,如果你只将它们格式化为日期,如“ddmmyyyy”,它将对你有效。WorksheetFunction.EoMonth(日期,0)仍然计算到2017年7月31日12:00。如果Emartin1863的所有“完成日期”值都不包含时间,则您的解决方案将有效。@DavidNeedham您测试过它吗?因为我使用此方法已有相当一段时间,并且有日期(其中没有时间)曾为me@ShaiRado.是的,我们是一致的。我是说该方法不起作用,因为M列中的值不是整数,它们是日期与时间。Excel将42947.29(2017年7月31日上午7点的日期与时间值)与42947.00进行比较。