调整当前区域大小的自动过滤器

时间:2019-01-04 17:18:44

标签: excel vba range autofilter

我正在尝试优化Access应用程序中Excel文件的更新处理时间,因此我想在调整大小的currentRegion上应用自动过滤器。

下面的代码是Access例程的一部分,该例程使用Access记录集数据添加/更新Excel文件。

     With xlsWkSheet
         .AutoFilterMode = True

         lXlsRowNumber = .Cells(.Rows.Count, .Range("ColRef").Column).End(xlUp).Row
         Set oXlsCurrentRegion=.Range("A1").CurrentRegion.Resize(RowSize:=lXlsRowNumber)

         With oXlsCurrentRegion
            .AutoFilterMode = True

            lIdxCol = .Range("ColCrit1").Column
            .AutoFilter Field:=lIdxCol, Criteria1:=IIf(Nz(oRecSet![ValueAccess], "") = "", "=", oRecSet![ValueAccess]) 
            End If

            Set xlsRangeAutoFilter = .SpecialCells(xlCellTypeVisible)

        End With

由于oRecSet![ValueAccess]为空而在自动筛选器上应用了“ =”时,将在Excel文件的左上角显示

  

在1047585个记录中找到0。

当我仅对带有标题的空白文件应用自动过滤器时,我期望«找到1条记录中的0条»

我希望过滤器仅应用于oXlsCurrentRegion区域,但显然不适用!

是否可以仅在XlsCurrentRegion区域上应用空白条件?

2 个答案:

答案 0 :(得分:0)

The Ultimate Guide to Excel Filters with VBA Macros – AutoFilter Method上,我们可以阅读下面的代码,这似乎是我的问题的解决方案

Sub AutoFilter_Range()
'AutoFilter is a member of the Range object

'Reference the entire range that the filters are applied to
'AutoFilter turns filters on/off when no parameters are specified.
Sheet1.Range("B3:G1000").AutoFilter

'Fully qualified reference starting at Workbook level
ThisWorkbook.Worksheets("AutoFilter Guide").Range("B3:G1000").AutoFilter

End Sub

我们可以在How to use AutoFilters in Excel VBA Macros上阅读

AutoFilterMode和FilterMode必须设置为False值

答案 1 :(得分:0)

我在Excel文件上测试了此代码,效果很好

K,M,B

6 rows found of 6 (6 enreg. trouvé(s) sur 6)