创建一个宏以在两个日期vba之间进行过滤

时间:2015-03-03 08:28:22

标签: excel vba excel-vba userform

我正在尝试编写一个可以在两个日期之间进行过滤的宏,但我不知道该怎么做。我的所有日​​期都在D列中。我试图使用此代码进行过滤,但是过滤器无法正常工作。

Sheets("All").ListObjects("Table_Name").Range.AutoFilter Field:=4, _
    Criteria1:=DTPicker1, Operator:=xlAnd, Criteria2:=txtEDate
    Sheets("All").Select

1 个答案:

答案 0 :(得分:0)

您输入代码的方式将过滤两个确切的日期。如果您正在寻找一个时间范围,那么您需要通过包含比较符号来扩展您的代码,例如<和>:

Sheets("All").ListObjects("Table_Name").Range.AutoFilter Field:=4, _
    Criteria1:=">=" & DateSerial(Year(DTPicker1), Month(DTPicker1), Day(DTPicker1)), Operator:=xlAnd, Criteria2:="<="DateSerial(Year(txtEDate), Month(txtEDate), Day(txtEDate))

此外,我总是喜欢在VBA中使用DateSerial,以确保识别日期并输入日期。如果您处理不同的国际日期格式,它还可以消除可能出现的问题。

您可能还想删除所有先前的过滤器:

Sheets("All").ShowAllData

否则,您的代码只会添加到现有过滤器中。