VBA Автофильтр, когда в коде ничего нет. - PullRequest
0 голосов
/ 03 июня 2019

У меня есть приведенный ниже код, и я получаю сообщение об ошибке при попытке его запустить "Ячейка не найдена".

Это потому, что после фильтрации иногда у меня нет результата.

Worksheets("DATA").Activate
Worksheets("DATA").AutoFilterMode = False
If Not ActiveSheet.AutoFilterMode Then
ActiveSheet.Range("A1").AutoFilter
End If


Selection.AutoFilter Field:=95, Criteria1:=Array("ABC", "DEF", "GHI"), Operator:=xlFilterValues


ActiveSheet.Range("2:" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter

Я хотел бы иметь код, который указывает игнорировать код, если автофильтр не возвращает результата.

Есть идеи, как это сделать? Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Вы можете просто проигнорировать ошибку:

Worksheets("DATA").Activate
Worksheets("DATA").AutoFilterMode = False
If Not ActiveSheet.AutoFilterMode Then
ActiveSheet.Range("A1").AutoFilter
End If

Selection.AutoFilter Field:=95, Criteria1:=Array("ABC", "DEF", "GHI"), Operator:=xlFilterValues

On Error Resume Next

ActiveSheet.Range("2:" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter

On Error GoTo 0
0 голосов
/ 03 июня 2019

Это будет делать:

Worksheets("DATA").Activate
Worksheets("DATA").AutoFilterMode = False
If Not ActiveSheet.AutoFilterMode Then
ActiveSheet.Range("A1").AutoFilter
End If


Selection.AutoFilter Field:=95, Criteria1:=Array("ABC", "DEF", "GHI"), Operator:=xlFilterValues

If ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then

ActiveSheet.Range("2:" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter

End If
...