如何从当前日期减去3天以自动过滤VBA

时间:2019-07-19 18:34:58

标签: excel vba date autofilter

我需要在Excel中对日期进行过滤。标准是从当前日期减去3天,并应显示之后的所有日期。我不确定在下面的代码中我在做什么错。

Sub filterTime()
Dim currDate as Date, oldDate as Date
currDate = Now
oldDate = currDate - 3

ActiveSheet.Range("$A$1:$W$8722").AutoFilter Field:=19, Criterial:=_">=" & oldDate, Operator:=xlAnd

1 个答案:

答案 0 :(得分:2)

不要对Date值进行数学运算。 DateTime模块提供特定于DateTime的功能,这些功能使currDate变量完全冗余。即,DateAdd函数-专门用于将各种“时间单位”添加到给定的Date值中。

Dim filterDate As Date
filterDate = DateTime.DateAdd("d", -3, DateTime.Now)

此外,由Date返回的DateTime.Now值将包含您可能不想在过滤器中使用的 time 部分(如果是这种情况,请考虑使用DateTime.Date)。通过将">="与一个Date值进行串联,您可以将该Date隐式转换为String,并将其留给VBA来决定该字符串表示形式如何。使用Strings.Format函数为该字符串指定显式格式:

Dim filterCriteria As String
filterCriteria = ">=" & Strings.Format(filterDate,"mm/dd/yyyy")

ActiveSheet.Range("$A$1:$W$8722").AutoFilter Field:=19, Criterial:=filterCriteria, Operator:=xlAnd