Страницы: 1
RSS
Как програмно определить активность фильтра?
 
Здравствуйте.  
Подскажите пожалуйста, как в макросе узнать установлен фильтр на листе excel или нет?  
Как я понимаю код Selection.AutoFilter - просто включает/выключает фильтр.
 
{quote}{login=Alexand}{date=17.12.2009 02:39}{thema=Как програмно определить активность фильтра?}{post}Здравствуйте.  
Подскажите пожалуйста, как в макросе узнать установлен фильтр на листе excel или нет?{/post}{/quote}  
ActiveSheet.EnableAutoFilter  
True - установлен  
False - не установлен
 
{quote}{login=Марчук}  
ActiveSheet.EnableAutoFilter  
True - установлен  
False - не установлен{/post}{/quote}  
 
Всегда False выдает почему то..
 
он выдает установлен автофильтр или нет, бросай скою книгу, посмотрим.
 
{quote}{login=Марчук}{date=17.12.2009 03:01}{thema=}{post}он выдает установлен автофильтр или нет, бросай скою книгу, посмотрим.{/post}{/quote}
 
Вопрос открыт.
 
{quote}{login=Марчук}{date=17.12.2009 03:01}{thema=}{post}P.S. Я архивы не могу качать и файлы 2007 офиса.{/post}{/quote}
 
У меня тоже ActiveSheet.EnableAutoFilter всегда False.  
На любых таблицах.    
А когда включил макрорекордер и последовательно выключил-включил автофильтр, то получил такую загадочную программку:  
Sub Макрос1()  
   Selection.AutoFilter  
   Selection.AutoFilter  
End Sub  
Такое впечатленин, что это работает как переключатель-инвертор имеющегося состояния.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
ActiveSheet.EnableAutoFilter относится к параметрам защиты листа, а не к тому, включен автофильтр или нет.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=}{date=17.12.2009 03:00}{thema=Re: Re: Как програмно определить активность фильтра?}{post}{quote}{login=Марчук}  
ActiveSheet.EnableAutoFilter  
True - установлен  
False - не установлен{/post}{/quote}  
 
Всегда False выдает почему то..{/post}{/quote}  
 
ну может я оказался и не прав :)  
 
разбираться надо, пока не понял как поймать состояние автофильра.  
я когда-то давно замарачивался с тем чтобы убирать фильтр если он есть а потом ставить, но это было на прошлой работе, исходников нету :(
 
позорище всем нам...  
Всё же элементарно:  
Если ActiveSheet.AutoFilterMode=True, то автофильтр включен, а если False - выключен
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Стоит углубиться в работу как тут гадания начинаются :)  
Ну нажмите Ф1 на слове EnableAutoFilter и узнайте, что речь идет о защите листа.  
 
а определять надо наличие объекта автофильтр:  
If ActiveSheet.AutoFilter Is Nothing Then MsgBox "Нет автофильтра" Else MsgBox "Есть автофильтр"  
 
Alex_ST, то что предлагаете Вы - есть определение отфильтровано что-либо или нет. Но, думаю, топикстартеру надо было именно это узнать :)
Bite my shiny metal ass!      
 
Ну, "я не знаю, как там у вас на западе"  (цитата :-)  
а у меня в программе автофильтра по содержимому текстбокса (которую вы мне помогали довести до ума в теме "Удобный автофильтр")именно так ОТЛИЧНО определяется, включен автофильтр на листе или нет. И при том, именно, включен или нет, а не отфильтровано ли что-нибудь. Только что проверил.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Alex_ST, нажмите там "отобразить все" и проверьте состояние ActiveSheet.AutoFilterMode. Оно будет False, хотя сам фильтр никуда не делся - треугольнички в наличии. Хотя если снять автофильтр совсем, то, да, ctiveSheet.AutoFilterMode=False. Т.е. есть состояние в котором это выражение врет, а именно: фильтр установлен, но ничего не отфильтровано.
Bite my shiny metal ass!      
 
Ну, вы конечно супер-спец по Ёкселю (без тени иронии), но посмотрите пример.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Alex_ST, я приношу свои извинения. Вы правы. А я все время имел в виду другое свойство - .FilterMode    
 
*Надо завязывать с таким количеством работы :)*
Bite my shiny metal ass!      
 
Спасибо всем за помощь. Вопрос решился.
Страницы: 1
Читают тему
Наверх