VBA自动过滤器在今天的日期和今天的日期之间 - 1年

时间:2018-05-15 11:51:22

标签: excel vba excel-vba excel-2016

我想在今天的日期和今天的日期减去1年之间进行过滤。当我运行以下VBA时没有任何反应,并且过滤器没有设置。任何人都可以指出我正确的方向,并搜索论坛的高低。

Sub Date_Filter()

    Keyboard Shortcut: Ctrl+Shift+Q

    Dim StartDate As Date
    Dim EndDate As Date
    StartDate = Date
    EndDate = Date - 365
    Sheets("Advisor Data").Select
     ActiveSheet.Range("$A$1:$AL$10000").AutoFilter Field:=4, Criteria1:=">=" & CDbl(EndDate), Operator:=xlAnd, Criteria2:="<=" & CDbl(StartDate)

End Sub

2 个答案:

答案 0 :(得分:1)

这一年有时候会有366天,因此为了使您的代码更加强大,您可以使用DateSerial()

Public Sub TestMe()

    Dim startDate As Date
    Dim endDate As Date
    startDate = Date
    endDate = DateSerial(Year(Date) - 1, Month(Date), Day(Date))

    Debug.Print endDate

End Sub

一旦你有正确的endDate,自动过滤器看起来没问题。

答案 1 :(得分:0)

像:

Option Explicit

Public Sub Date_Filter()
    Dim StartDate As Date
    Dim EndDate As Date
    EndDate = Date
    StartDate = DateAdd("yyyy", -1, Date)

    With ThisWorkbook.Worksheets("Advisor Data").Range("$A$1:$AL$10000")
        .AutoFilter
        .AutoFilter Field:=4, Criteria1:=">=" & CLng(StartDate), Operator:=xlAnd, Criteria2:="<=" & CLng(EndDate)
    End With
End Sub