Не применять фильтр к столбцу, если критерии фильтра не существуют - PullRequest
0 голосов
/ 16 марта 2020

У меня есть следующий простой лист Excel:

       A             B           C           D
1  Products        Check
2  Product A       OK
3  Product B       OK
4  Product C       OK
5  Product D       OK
6  Product E       OK
7
8

На этих данных я хочу запустить фильтр, используя этот VBA:

Sub Filter()
Sheet1.Range("$A$1:$B$1").AutoFilter _
Field:=Sheet1.Range("$B$1").Column, _
Criteria1:="Error"
End Sub

Этот VBA прекрасно работает до тех пор, пока в качестве критерия Error появляется хотя бы один раз в Column B.
Однако, как видно из приведенного выше примера, критерии Error не отображаются вообще.
Теперь, когда я запускаю VBA, он применяет фильтр к Column B и скрывает все строки, похожие на это:

enter image description here

Как, я должен изменить свой VBA, чтобы в случае, если фильтр criteria не существует в Column, фильтр к нему не применяется?

1 Ответ

0 голосов
/ 16 марта 2020

Попробуйте, пожалуйста:

Sub testFilterError()
  Dim strErr As String
  strErr = "Error"
   If Application.CountIf(Sheet1.Range("B1:B" & Sheet1.Range("B1").End(xlDown).Row), "Error") > 0 Then
      Sheet1.Range("$A$1:$B$1").AutoFilter _
            field:=Sheet1.Range("$B$1").Column, _
                                Criteria1:=strErr
  Else
    MsgBox "No """ & strErr & """ string in B:B column..."
  End If
End Sub

Код может быть легко адаптирован для некоторых других слов со странным поведением при фильтрации ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...