Excel VBA - проблемы с форматом даты в InputBox и автофильтре в Великобритании - PullRequest
1 голос
/ 18 апреля 2019

Я применяю автофильтр с конкретными диапазонами дат, используя VBA, и запускаю приведенный ниже код. Проблема заключается в том, что каждый раз, когда я применяю автофильтр, дата отображается в формате США (ММ / ДД / ГГГГ). В моем отчете даты указаны в британском формате (ДД / ММ / ГГГГ), и мне нужно использовать этот формат для моих отчетов. Мой код, как показано ниже:

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:$C").AutoFilter Field:=3, Criteria1:=">=" & sdt, 
Operator:=xlAnd, Criteria2:="<=" & edt

Я попытался немного изменить свой код, но безуспешно:

ActiveSheet.Range("$A:$C").AutoFilter Field:=2, Criteria1:=">=" & CLng(Range("sdt").Value), Criteria2:="<=" & CLng(Range("edt").Value)

или

ActiveSheet.Range("$A:$C").AutoFilter Field:=2, Criteria1:=">=" & CDbl(sdt) Operator:=xlAnd, Criteria2:="<=" & CDbl(edt)

Не могли бы вы посоветовать горячую модификацию моего кода, чтобы применить автофильтр в формате даты Великобритании (ДД / ММ / ГГГГ)?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Вы пытались применить тип String к std и etd?

Dim sdt As String
Dim edt As String
sdt = Format(CDate(Application.InputBox("Choose Start date.", Default:="31-12-2018", Type:=2)), "MM-DD-YYYY")
edt = Format(CDate(Application.InputBox("Choose End date.", Default:="31-12-2019", Type:=2)), "MM-DD-YYYY")
ActiveSheet.Range("$A:$C").AutoFilter Field:=3, Criteria1:=">=" & sdt, Operator:=xlAnd, Criteria2:="<=" & edt

Я поставил дату по умолчанию в качестве примера и использовал форматирование даты в соответствии с предложенной ошибкой 1004 (но с «ММ-ДД-ГГГГ» вместо «ДД / ММ / ГГГГ»)

0 голосов
/ 18 апреля 2019

Вы можете попробовать:

Option Explicit

Sub test()

    Dim sdt As Date
    Dim edt As Date

    sdt = Format(Application.InputBox("Choose Start date.", Type:=2), "DD/MM/YYYY")
    edt = Format(Application.InputBox("Choose End date.", Type:=2), "DD/MM/YYYY")


    ActiveSheet.Range("$A:$C").AutoFilter Field:=3, Criteria1:=">=" & sdt, Operator:=xlAnd, Criteria2:="<=" & edt

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