excel 按条件自动筛选1

li9yvcax  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(178)

应用自动筛选后,我的数据没有显示。
如果我手动应用相同的过滤器,数据会正确显示。

Private Sub FilteringReport()
    Workbooks.Open Filename:="C:\Users\benesjan\Desktop\Benes_jan\Excel_VBA\test_file\preventive_report.xlsx"
    Workbooks("preventive_report.xlsx").Sheets("Sheet1").Activate
    
    'Todays date, or custom date
    If Workbooks("PMM_reports.xlsm").Sheets("Sheet1").CheckBox1.Value = True Then
        edate = Worksheets("Sheet1").Range("B6").Value
    Else
        uedate = Now()
        edate = Format(uedate, "dd.mm.yyyy")
    End If
            
    MsgBox edate
    
    'edate is 10.08.2022
    With Sheets("Sheet1")
        .Range("A:J").AutoFilter Field:=5, Criteria1:=""
        .Range("A:J").AutoFilter Field:=7, Criteria1:="<" & edate
    End With 
  
End Sub

我正在筛选此表

第一个过滤器工作并返回

应用第二个过滤器后得到

如果我手动单击“确定”,它会重新应用它,并自行刷新并开始工作。刷新整个工作簿或重新应用筛选器不起作用,甚至录制的宏也不起作用。

mnemlml8

mnemlml81#

经过一些修改后,代码如下所示。

Sub FilteringReport()
        Workbooks.Open Filename:="C:\Users\benesjan\Desktop\Benes_jan\Excel_VBA\test_file\preventive_report.xlsx"
        Workbooks("preventive_report.xlsx").Sheets("Sheet1").Activate
                
                
        'Todays date, or custom date
        If Workbooks("PMM_reports.xlsm").Sheets("Sheet1").CheckBox1.Value = True Then
            edate = Workbooks("PMM_reports.xlsm").Sheets("Sheet1").Range("B6").Value
        Else
            edate = Date
        End If
                
        With Sheets("Sheet1")
            .UsedRange.AutoFilter Field:=5, Criteria1:=""
            .UsedRange.AutoFilter Field:=7, Criteria1:="<" & CDbl(edate), Operator:=xlOr, Criteria2:="=" & CDbl(edate)
        End With
 End Sub

格式化Now()函数导致数据无法正确过滤,通过使用Date函数,我能够使过滤器工作。谢谢 Foxfire And Burns And Burns

相关问题