Страницы: 1
RSS
Макрос для работы с фильтрами
 
Есть документ, в котором столбцы отфильтрованы автофильтром и простенький макрос для работы с фильтрами, записанный макрорекордером:      
   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:="="
 
Если все правилно понял, то нужно проверять на наличие отфильтрованных данных, что-то типа этого  
if ActiveSheet.FilterMode = True then и т.д
 
Спасибо, Артем  
Получилось сам не знаю как вот такое вот чудо:        
If ActiveSheet.FilterMode = True Then  
   ActiveSheet.ShowAllData  
   Selection.AutoFilter Field:=6, Criteria1:="<>"  
   Selection.AutoFilter Field:=7, Criteria1:="="  
   Else  
   Selection.AutoFilter Field:=6, Criteria1:="<>"  
   Selection.AutoFilter Field:=7, Criteria1:="="  
   End If  
End Sub  
Вроде работает :)
 
можно проще)  
If ActiveSheet.FilterMode = True Then _  
ActiveSheet.ShowAllData  
Selection.AutoFilter Field:=6, Criteria1:="<>"  
Selection.AutoFilter Field:=7, Criteria1:="="  
 
End Sub
 
И я пять копеек добавлю:  
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData  
Selection.AutoFilter Field:=6, Criteria1:="<>"  
Selection.AutoFilter Field:=7, Criteria1:="="  
 
:)) любую программу можно уменьшить на одну строчку ... (ну и далее по тексту)
Страницы: 1
Читают тему
Наверх