Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何从自动筛选VBA的当前日期中减去3天_Excel_Vba_Date_Autofilter - Fatal编程技术网

Excel 如何从自动筛选VBA的当前日期中减去3天

Excel 如何从自动筛选VBA的当前日期中减去3天,excel,vba,date,autofilter,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:=_">=" & oldDat

我需要对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

不要对
Date
值进行数学运算。
DateTime
模块提供了特定于
DateTime
的函数,使
currDate
变量完全冗余。也就是说,
DateAdd
函数-专门用于向给定的
Date
值添加各种“时间单位”

Dim filterDate As Date
filterDate = DateTime.DateAdd("d", -3, DateTime.Now)
< > > <代码>日期>代码>值>代码>日期时间。现在将包含您可能不希望在过滤器中的时间部分(如果是这样的话,那么考虑使用<代码> DATETIME.DATE < /COD>)。通过将
“>=”
日期
值连接起来,可以隐式地将该
日期
转换为
字符串
,并由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

不要对
Date
值进行数学运算。
DateTime
模块提供了特定于
DateTime
的函数,使
currDate
变量完全冗余。也就是说,
DateAdd
函数-专门用于向给定的
Date
值添加各种“时间单位”

Dim filterDate As Date
filterDate = DateTime.DateAdd("d", -3, DateTime.Now)
< > > <代码>日期>代码>值>代码>日期时间。现在将包含您可能不希望在过滤器中的时间部分(如果是这样的话,那么考虑使用<代码> DATETIME.DATE < /COD>)。通过将
“>=”
日期
值连接起来,可以隐式地将该
日期
转换为
字符串
,并由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

是的,我刚刚更改了它。它现在可以工作了吗?删除
,除非你有两行。它告诉vba继续到下一行。回应@ScottCraner的评论,将
Criterial:=\ucode>更改为
Criteria1:=
。下划线是一个行延续标记,前面必须有空格,后面必须有新行。注
Criteria1
不是
Criterial
。命名参数必须与为其提供的参数名称匹配。没有
Criterial
(小写
L
)。有些不对劲,它说“需要对象”是为了哪个行?我无法用问题中的代码重现那个问题。也就是说,您根本不需要
currDate
,只需执行
oldDate=DateTime.DateAdd(“d”、-3,DateTime.Now)
,我会尽量避免
Criteria1
参数中的隐式字符串转换,使用
Format
函数可以显式指定日期的字符串表示形式。是的,我刚刚更改了它。现在可以使用了吗?删除
\u
,除非该行在两行上。它告诉vba继续到下一行。回应@ScottCraner的评论,将
Criterial:=\ucode>更改为
Criteria1:=
。下划线是一个行延续标记,前面必须有空格,后面必须有新行。注
Criteria1
不是
Criterial
。命名参数必须与为其提供的参数名称匹配。没有
Criterial
(小写
L
)。有些不对劲,它说“需要对象”是为了哪个行?我无法用问题中的代码重现那个问题。也就是说,您根本不需要
currDate
,只需执行
oldDate=DateTime.DateAdd(“d”、-3,DateTime.Now)
,我将尝试避免
Criteria1
参数中的隐式字符串转换,使用
Format
函数来显式指定日期的字符串表示形式。谢谢,正是我需要的!谢谢,这正是我需要的!