我正在使用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)的自动过滤器吗?
谢谢。
答案 0 :(得分:2)
您是否尝试过将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(但使用“ MM-DD-YYYY”而不是“ DD / MM / YYYY”)
答案 1 :(得分: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