VBA代码可在一系列日期之间进行过滤

时间:2015-11-16 11:30:19

标签: excel vba excel-vba date

我希望根据用户友好的下拉框过滤我的日期表。

按照目前的情况,下拉框仅填充月份名称。 然后有一个隐藏的公式,将这些名称转移到单元格U4和U5中的2个日期。 日期是该月的第一天和月的最后一天。

我希望能够选择月份,然后单击按钮以过滤日期下面的列表对象表。

这是我目前的代码:

Sub Filters()

    Range("U4", "U5").Copy
    Range("V4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False`

    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, Criteria1:=">=" & Range("V4").Value, Operator:=xlAnd, Criteria2:="<=" & Range("V5").Value, Operator:=xlAnd

End Sub

但是过滤器没有&#34;执行&#34; 我已经将细胞复制到V4和V5以查看这些公式是否与它有关,但没有任何乐趣。

1 个答案:

答案 0 :(得分:0)

如果您从公式中选择日期,请采用原始基础值并直接转移它们。

With ActiveSheet
    .Range("V4:V5") = .Range("U4:U5").Value2

    .ListObjects("Table1").Range.AutoFilter  '<~~turn off any previous filtering operation
    .ListObjects("Table1").Range.AutoFilter Field:=2, _
            Criteria1:=">=" & Application.Min(.Range("V4").Value2, .Range("V5").Value), _
            Operator:=xlAnd, _
            Criteria2:="<=" & Application.Max(.Range("V4").Value2, .Range("V5").Value)
End With

我不确定是否可能会对过滤期间的开始和结束产生一些混淆,但我添加了一些工作表函数,以便正确排序。