Автофильтр VBA между сегодняшней датой и сегодняшней датой - 1 год - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь фильтровать между сегодняшней датой и сегодняшней датой минус 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 голосов
/ 15 мая 2018

В году иногда 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, автофильтр выглядит нормально.

0 голосов
/ 15 мая 2018

Как:

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
...