Excel VBA - InputBox和Autofilter UK日期格式问题

问题描述 投票:1回答:2

我正在使用VBA应用具有特定日期范围的自动过滤器并运行以下代码。问题是,每次应用自动过滤器时,日期都采用美国格式(MM / DD / YYYY)。在我的报告中,日期是英国格式(DD / MM / YYYY),我需要使用此格式进行报告。我的代码如下:

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)

您能否建议热修改我的代码以应用英国日期格式(DD / MM / YYYY)的自动过滤器?

提前致谢。

excel vba
2个回答
2
投票

你有没有尝试过将String类型应用于stdetd

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建议(但使用“MM-DD-YYYY”而不是“DD / MM / YYYY”)


0
投票

你可以尝试:

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
© www.soinside.com 2019 - 2024. All rights reserved.