首页 > 解决方案 > Excel 365 VBA 日期在自定义自动过滤器中不起作用

问题描述

我创建了以下代码来过滤表(GrafanaPMT)以过滤今天未来日期之后的所有日期。前几行清除当前过滤器,最后一行将日期插入到 Excel 表中,但不显示任何行(许多行的日期为未来)。

我也尝试过对今天的日期进行硬编码,尽管已添加到自定义自动过滤器中,但它也不会显示任何行。

如果我在过滤器中实际输入“19/08/2021”,则会显示超过 1000 行。

任何帮助将非常感激。

\[自动过滤器中显示的日期] 1

Sub MS4_not_6_over_3m()
'
' MS4_not_6_over_3m Macro
'
    Dim today As Date
    
    Sheets("Data").Select
    ActiveSheet.ListObjects("GrafanaPMT").Range.AutoFilter Field:=5, Criteria1:="SEAL-RAN"
    Rows("10:10").Select
    ActiveWorkbook.Worksheets("Data").ListObjects("GrafanaPMT").Sort.SortFields.Clear
    ActiveSheet.ShowAllData

    ActiveSheet.ListObjects("GrafanaPMT").Range.AutoFilter Field:=11, Criteria1:=">=" & Format(today, "dd/mm/yyyy")

End Sub

标签: excelvbadateautofilter

解决方案


尝试这个

Sub MS4_not_6_over_3m()
    Dim ws As Worksheet: Set ws = Sheets("Data")
    Dim ol As ListObject: Set ol = ws.ListObjects("GrafanaPMT")
    Dim olCol As Integer
    
    ' clear table filters
    If ol.AutoFilter.FilterMode Then ol.AutoFilter.ShowAllData
    
    ' Filter column 'mydate'
    olCol = ol.ListColumns("myDate").Index  ' Put here the name of your column
    ol.Range.AutoFilter Field:=olCol, Criteria1:=">=" & Format(Date, "mm/dd/yyyy")
    
    ' OR
    ' ol.Range.AutoFilter Field:=olCol, Criteria1:=">=" & CDbl(Date)
End Sub

推荐阅读