Автофильтр в текущем регионе изменен - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь оптимизировать время обработки обновления файла Excel из приложения Access, поэтому я хочу применить автофильтр к измененному текущему региону.

Этот код ниже является частью процедуры Access, которая добавляет / обновляет файл Excel с данными набора записей Access.

     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] имеет значение null, в левом верхнем углу файла Excel отображается

0 Из 1047585 найденных записей.

Когда я применяю автофильтр к пустому файлу только с заголовками, я ожидал «0 из 1 найденных записей»

Я надеялся, что фильтр был применен только к областям oXlsCurrentRegion, но, очевидно, нет!

Есть ли способ применить пустые критерии только к областям XlsCurrentRegion?

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Я тестировал этот код в файле Excel, и он отлично работает

Private Sub CommandButton1_Click()
   With ActiveSheet
     .FilterMode = False
     .AutoFilterMode = False

      Set oRange = .Range("A2:E8")
      With oRange
       .AutoFilter Field:=5, Criteria1:="="
      End With    
   End With
End Sub

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

0 голосов
/ 06 января 2019

Вкл. Ультимативное руководство по фильтрам Excel с макросами VBA - метод автофильтра ниже приведен код, который, кажется, решает мою проблему

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

И как мы можем прочитать на Как использовать автофильтры в макросах Excel VBA

Для AutoFilterMode и FilterMode должно быть установлено значение False

...