Я пытаюсь отфильтровать определенные критерии, в данном случае Anything Like -SERVICE CODE Я фильтрую это в имени столбца, а не в столбце, представленном A: A. Часть FIrst кода работает нормально, оператор If - это то, где у меня возникают проблемы. Я создал оператор If, чтобы иметь возможность сделать что-то, если есть фактический ряд данных, который отображается для фильтра -SERVICE CODE, в этом случае он должен показывать «Данные», если есть хотя бы одна строка, которая фильтруется, проблема в том, что он показывает сообщение «Данные», даже если нет ничего, что показано при фильтрации.Excel VBA - IF Autofilter не содержит записей, MsgBox
Я пытаюсь выяснить, как получить Msg of No Data, чтобы показывать правильно, когда нет ничего, что соответствует критериям фильтра.
Спасибо,
Sub Filter results()
Dim rng As Range, res As Variant
Set rng = ActiveSheet.AutoFilter.Range.Rows(1)
res = Application.Match("Errors", rng, 0)
rng.AutoFilter Field:=res, Criteria1:="*-SERVICE CODE*"
If rng.SpecialCells(xlCellTypeVisible).Count > 1 Then
MsgBox "Data"
Else
MsgBox "No Data"
End If
End Sub()
У вас всегда есть ячейки в 'rng'? Если так, функция 'Count' возвращает количество ячеек, независимо от того, есть ли в них данные или нет? Не уверен, просто предложение. Можете ли вы прокомментировать, что возвращает 'rng.SpecialCells (xlCellTypeVisible)'? – AER
Похож, что 'rng' - это строка заголовка, поэтому она всегда видна и всегда возвращает больше 1. Измените диапазон видимых ячеек, которые вы считаете' A: A', и он должен работать нормально. –
@AER Здравствуйте, он возвращает только строку заголовка, если критерии не совпадают. – MrLockett