Я хочу ввести дату начала и дату окончания и иметь VBA для фильтрации записей данных в таблице Excel между выбранными датами. Однако этот код возвращает ноль отфильтрованных записей. Если я иду к фильтру в Excel вручную, я обнаруживаю, что он настроен правильно (даты помещены в поля критериев фильтра). Если я затем нажимаю кнопку ОК, это фильтрует нормально. Есть идеи, какую ошибку я совершил?

Ps предполагают, что значения в поле ввода корректно отформатированы

Option Explicit

Sub ExpCsmLg()

' ExpCsmLg Makro
' this makro filters all data entries between two selected dates

Dim sdt As Date
Dim edt As Date

'sdt = InputBox("Choose Start date.")

'edt = InputBox("Choose End date.")


    ActiveSheet.Range("$A$5:$Q$7992").AutoFilter Field:=1, Criteria1:=">=" & sdt, Operator:=xlAnd, Criteria2:="<=" & edt


End Sub

1 ответ1

0

Похоже, это работает для меня:

Option Explicit

Sub ExpCsmLg()

' ExpCsmLg Makro
' this makro filters all data entries between two selected dates

Dim sdt As Date
Dim edt As Date

sdt = CDate(Application.InputBox("Choose Start date.", Type:=2))

edt = CDate(Application.InputBox("Choose End date.", Type:=2))


    ActiveSheet.Range("$A$5:$Q$7992").AutoFilter Field:=1, Criteria1:=">=" & sdt, Operator:=xlAnd, Criteria2:="<=" & edt


End Sub

До:

и после:

НОТА:

Элементы в столбце A являются действительными датами, а не текстовыми значениями.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .