У меня есть следующая таблица:
И следующий код (который фильтрует эту таблицу):
Sub testFilter()
Dim tbl As ListObject
Dim filteredRange As Range
Set tbl = Sheet1.ListObjects("testTbl")
tbl.Range.AutoFilter Field:=2, Criteria1:=Array("a", "b")
On Error Resume Next
Set filteredRange = tbl.ListColumns("status").DataBodyRange.SpecialCells(xlVisible)
On Error GoTo 0
If filteredRange Is Nothing Then
'do something
Else
Debug.Print filteredRange.Address
End If
End Sub
Я ожидаю, что filterRange ничего не будет. Но это не пустяк, и адрес, который он печатает, выглядит следующим образом: $ 1: $ 1, $ 3: $ 1048576, что по сути представляет собой весь лист рядом с одной строкой, которая у меня есть в таблице.
Что я делаю не так? Мне нужна возможность определить, что фильтр не дал результатов.