我们正在尝试使此代码能够按准确的日期过滤工作表,但仍然无法弄清楚,有什么主意吗?日期在工作表中的格式为mm / dd / yyyy
Sub FilterDate()
Dim ap, dt As Date, dt1 As Date, lr&: lr = ActiveSheet.UsedRange.SpecialCells(11).Row
With ActiveSheet.[a1].CurrentRegion.Resize(lr, 10)
ap = Application.InputBox("get date")
dt = CDate(ap)
.AutoFilter 10, "=" & dt
End With
End Sub
感谢您指出声明问题,我在excel工具中进行了更改,但是代码似乎还有另一个问题,任何日期输入仅保留第一行...
答案 0 :(得分:2)
您缺少声明变量!!使用Option Explicit将使您的工作更加轻松,因为没有声明的变量就无法运行代码。
在VBA编辑器中,转到:“工具”->“选项”->“ Require Variable Declaration”。
Sub FilterDate()
Dim ap As Date, dt As Date, dt1 As Date
Dim lr As Long
lr = ActiveSheet.UsedRange.SpecialCells(11).Row
With ActiveSheet.[a1].CurrentRegion.Resize(lr, 10)
ap = Application.InputBox("get date")
dt = CDate(ap)
'dt = CDate("2018-10-26")
.AutoFilter 10, Criteria1:=">=" & dt, _
Operator:=xlAnd, Criteria2:="<" & dt + 1
End With
End Sub
编辑:
是的,因为您有日期,所以需要filter in an interval,而不是一个“ =”条件(两个条件,即您的日期在这两个条件之间),不要忘记制作一个标题,因为标题值始终存在(代码已更新)。以下示例的日期为2018-10-26。