我正在尝试过滤日期小于今天的列中的日期。我已经编写了代码,但它似乎没有用。
Sub FilterByDate()
Dim ws1 As Worksheet
Set ws1 = ActiveWorkbook.Worksheets("Sheet1")
Set rng1 = ws1.Range(ws1.[c2], ws1.Cells(Rows.count, "C").End(xlUp))
Dim todayDate As Date
todayDate = Format(Date, "dd/mm/yyyy")
rng1.AutoFilter Field:=1, Criteria1:="<" & todayDate
rng1.Offset(1, 0).EntireRow.Delete
ws1.AutoFilterMode = False
End Sub
此代码不会过滤日期小于今天的日期。当我过滤时,列表似乎没有变化。需要一些帮助。
编辑:
15/03/2016
15/12/2015
17/11/2015
14/01/2016
18/02/2016
14/04/2016
15/12/2015
17/11/2015
14/01/2016
17/11/2015
答案 0 :(得分:1)
在AutoFilter
声明的最后,请执行:
Operator:=xlAnd
这条线应该成为:
rng1.AutoFilter Field:=1, Criteria1:="<" & todayDate, Operator:=xlAnd
对于需要此运算符的日期过滤器,必须有所不同。我不会声称提前知道这个,我用宏录音机搞清楚了:)
评论中的其他信息:
您的问题可能与系统区域设置和VBA&#34;功能&#34;有关。在内部使用美国英语日期。
另外:在这个声明中可能会有一些糟糕的juju:
todayDate = Format(Date, "dd/mm/yyyy")
在这里,您将获取 date (长整数,由Date()
函数生成)并通过Format()
将其转换为字符串,返回一个字符串,然后您&# 39;将该字符串放入todayDate
变量中。即使您已使用区域设置解决了该问题,此声明本身也可能存在问题。