Есть документ, в котором столбцы отфильтрованы автофильтром и простенький макрос для работы с фильтрами, записанный макрорекордером:
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="
Т.е. суть его такова: вначале открывается все фильтры (если что-то отфильтровано), затем столбец 6 фильтруется по непустым значениям, 7-й столбец - по непустым. Все почти так как и нужно, только есть одна небольшая проблема - если уже изначально перед запуском макроса все фильтры "открыты", т.е. изначально ActiveSheet.ShowAllData, то выводится ошибка. Отсюда вопрос - как сделать так, чтобы если включен хоть один фильтр, то макрос шел по самой верхней схеме:
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="
А если уже все сразу показано и фильтры не включены, то первая строчка пропускалась:
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="
Т.е. суть его такова: вначале открывается все фильтры (если что-то отфильтровано), затем столбец 6 фильтруется по непустым значениям, 7-й столбец - по непустым. Все почти так как и нужно, только есть одна небольшая проблема - если уже изначально перед запуском макроса все фильтры "открыты", т.е. изначально ActiveSheet.ShowAllData, то выводится ошибка. Отсюда вопрос - как сделать так, чтобы если включен хоть один фильтр, то макрос шел по самой верхней схеме:
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="
А если уже все сразу показано и фильтры не включены, то первая строчка пропускалась:
Selection.AutoFilter Field:=6, Criteria1:="<>"
Selection.AutoFilter Field:=7, Criteria1:="="