Страницы: 1
RSS
VBA: отфильтрован ли столбец?
 
Всем здравствуйте! Подскажите пожалуйста как в vba получить ответ на вопрос, "отфильтрован ли второй столбец в таблице?".
Excel всемогущий.
 
Где-то, что-то, так. (могут быть ошибки, писал в форум)
Код
If Autofilter.Filters(k).On Then
 
Попробовал - не работает.
Код
Sub Фильтр()
If AutoFilter.Filters(2).On Then MsgBox "ok"
End Sub
Excel всемогущий.
 
Код
If ActiveSheet.AutoFilter.Filters(2).On Then MsgBox "ok"
 
Цитата
RAN написал:
If ActiveSheet.AutoFilter.Filters(2).On Then MsgBox "ok"
Тоже не работает.
Excel всемогущий.
 
Код
Sub Фильтр()
Dim ws As Worksheet, lcnt As Long, f
Set ws = ActiveSheet
For Each f In ws.AutoFilter.Filters
    lcnt = lcnt + 1
    If f.On Then
        MsgBox lcnt
    End If
Next
End Sub
Привыкайте объявлять переменные и главное: помните о родителях :)
Здесь важно было еще и Worksheet указать
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Фильтр в VBA, штука капризная. Например, в вашем файле в строке
Код
a = Not Intersect(ActiveCell, ActiveSheet.AutoFilter.Range) Is Nothing

не возможно получить False. Вместо этого вылетает ошибка.
 
The_Prist, почему то не работает. Может дело в таблице  
Код
Range("Таблица2[[#Headers],[Наименование]]").Select
[/USER]
Изменено: agregator - 15.07.2016 00:01:37
Excel всемогущий.
 
Цитата
agregator написал: Может дело в таблице
Не "может", а именно в ней. Прозевал в файле.  :cry:
 
А я вот пробовал именно на примере, приложенном ранее. У таблиц-то вообще-то свои фильтры - отдельно от листа живут...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
И была у меня мысля, добавить строчку ...
Код
If ActiveSheet.AutoFilterMode
 
Цитата
agregator написал:
Может дело в таблице
Ну вот за ночь даже не догадались мой пример под свою таблицу приладить, что ли?
Код
Sub Фильтр2()
Dim ws As Worksheet, lcnt As Long, f
Set ws = ActiveSheet
For Each f In ws.ListObjects(1).AutoFilter.Filters
    lcnt = lcnt + 1
    If f.On Then
        If ws.ListObjects(1).ListColumns(lcnt) = "Наименование" Then
            MsgBox lcnt
        End If
    End If
Next
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо за помощь. Работает Sub Фильтр2.
Excel всемогущий.
Страницы: 1
Читают тему
Наверх