Код VBA для фильтрации листа по точной дате с использованием InputBox - PullRequest
0 голосов
/ 04 ноября 2018

Мы пытаемся заставить этот код работать для фильтрации листа по точной дате, но до сих пор не можем понять, есть идеи, что не так? Дата отформатирована в листе как мм / дд / гггг

Sub FilterDate()
    Dim ap, dt As Date, dt1 As Date, lr&: lr = ActiveSheet.UsedRange.SpecialCells(11).Row

    With ActiveSheet.[a1].CurrentRegion.Resize(lr, 10)
        ap = Application.InputBox("get date")
        dt = CDate(ap)
       .AutoFilter 10, "=" & dt
    End With
End Sub

Образец файла

Спасибо, что указали на проблему с объявлением, я внес изменения в инструменты Excel, но у кода, похоже, есть другая проблема, любой ввод даты оставляет только верхнюю строку ...

1 Ответ

0 голосов
/ 04 ноября 2018

Вы отсутствуете для объявления переменных !! Использование Option Explicit сделает вашу жизнь намного проще, так как вы не можете запустить код без объявленных переменных.

В редакторе VBA перейдите: «Инструменты» -> «Параметры» -> « Требуется объявление переменной ».

Sub FilterDate()
    Dim ap As Date, dt As Date, dt1 As Date
    Dim lr As Long
    lr = ActiveSheet.UsedRange.SpecialCells(11).Row
    With ActiveSheet.[a1].CurrentRegion.Resize(lr, 10)
        ap = Application.InputBox("get date")
        dt = CDate(ap)
        'dt = CDate("2018-10-26")
        .AutoFilter 10, Criteria1:=">=" & dt, _
                     Operator:=xlAnd, Criteria2:="<" & dt + 1
    End With
End Sub

enter image description here


EDIT:

Да, поскольку у вас есть дата, вам нужно отфильтровать в интервале , а не один критерий "=" (два критерия, когда ваша дата находится между этими двумя критериями), не забудьте указать заголовок, так как значения заголовка всегда присутствуют (код обновляется). Пример ниже с датой 2018-10-26.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...