【问题标题】:VBA code to filter sheet by exact date using InputBox使用 InputBox 按确切日期过滤工作表的 VBA 代码
【发布时间】:2019-04-08 02:21:22
【问题描述】:

我们正在尝试让此代码按确切日期过滤工作表,但仍然无法弄清楚,有什么问题吗?日期在表格中格式化为 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

File sample

感谢您指出声明问题,我在 excel 工具中进行了更改,但代码似乎有另一个问题,任何日期输入只留下第一行...

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您缺少声明变量!使用 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。

    【讨论】:

    • 感谢您指出声明问题,我在 excel 工具中进行了更改,但代码似乎有另一个问题,任何日期输入只留下第一行...
    • 可能与当前区域 A1 有关,确保 A 列中有所有条目的数据,或者选择不同的活动区域。或者更好的是,一起避免使用 activeregion。
    • @FotoDJ,我已经更新了我的答案,以反映您如何使用日期值进行过滤:)
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 2016-04-14
    相关资源
    最近更新 更多