按VBA代码

时间:2018-05-23 07:39:58

标签: vba excel-vba excel

我想用VBA代码过滤日期列,但结果却是错误的。

我的数据(仅限示例,我有很多行):

complete_date
(blank)
(blank)
(blank)
(blank)
(blank)
(blank)
5/12/18 9:08 AM
5/12/18 9:41 AM
5/20/18 1:51 PM
(blank)
(blank)
(blank)
(blank)
5/20/18 1:50 PM
5/20/18 1:52 PM
5/21/18 6:35 AM
5/20/18 1:49 PM
5/20/18 1:54 PM
5/21/18 7:53 AM
5/20/18 1:49 PM
5/20/18 1:56 PM
5/21/18 11:20 AM
5/20/18 1:49 PM

我的代码:

Public Sub MyFilter()
    Dim lngStart As Long, lngEnd As Long
    lngStart = Range("b1").Value 'assume this is the start date
    lngEnd = Range("b2").Value 'assume this is the end date
    Range("q:q").AutoFilter field:=1, _
        Criteria1:=">=" & lngStart, _
        Operator:=xlAnd, _
        Criteria2:="<=" & lngEnd
End Sub

对于此示例,如果我根据以下日期过滤我没有得到所有可能的结果(我没有看到5/20天的任何结果)。 我的搜索:

5/20/18 13:51 ---&gt;开始时间 5/22/18 13:51 ---&gt;结束时间

知道为什么吗?谢谢,

1 个答案:

答案 0 :(得分:0)

应该在日期而不是字符串之间进行比较,假设您的列Q和2个输入单元格被格式化为日期

只需将您的代码更改为

即可
Dim lngStart As date, lngEnd As date