我想输入开始日期和结束日期,并让 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
这似乎对我有用:
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是真实日期而不是文本值。