Страницы: 1
RSS
Как сбросить фильтр?, VBA
 
Добрый день,
Я не совсем знаю как сформулировать данный вопрос, но попробую описать процесс и итог. Мне необходимо скинуть фильтр на листе, после чего выполнить макрос. Если его скидвать кодом:
Код
Лист1.ShowAllData

То при отсутствии фильтрации код уйдет в ошибку. Это можно решить добавив код следующие значение:
Код
On Error Resume Next
Лист1.ShowAllData

И все работает отлично. В связи с чем возникает два вопроса:
1. Есть ли более оптимальные метод сброса фильтра без ошибки?
2. Будет ли On Error Resume Next пропускать все возникающие ошибки дальше в код? Когда стейтмент перестает работать? Мне не надо пропускать все ошибки после, только с фильтрацией.
Спасибо
 
Код
On Error Resume Next
'Что-то, что, возможно, даст ошибку
on error goto 0
Скажи мне, кудесник, любимец ба’гов...
 
А, можно обратно "включить ошибки" и будет нормально. Понял, спасибо.
 
Цитата
Валерий Кишин: Есть ли более оптимальные метод сброса фильтра без ошибки?
можно проверить наличия фильтра на листе, но я пользуюсь именно вариантом
Код
On Error Resume Next
Лист1.ShowAllData
On Error GoTo 0
— он очень быстрый и простой
Цитата
Валерий Кишин: Будет ли On Error Resume Next пропускать все возникающие ошибки дальше в код? Когда стейтмент перестает работать?
будет работать до окончания работы процедуры, в которой он был вызван или до его выключения. При этом, если при его работе возникнут ошибки, то Err.Number будет определён и во всех других процедурах после. Пока не очистить Err.Clear или не выключить пропуск ошибок (On Error GoTo 0 обнуляет Err.Number)
Изменено: Jack Famous - 04.08.2022 11:00:20
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
если в одной из вызываемых функций/процедур, его выставить, то он сохранится и после окончания процедуры, из которой был вызван — в других процедурах.
Пример приведете? Очень интересно посмотреть
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, вы правы - я забыл и некорректно выразился. В другие процедуры лишь переносится код ошибки, но срабатывание на ошибки работает. Изменил ответ. Спасибо!  :idea:
Код
Изменено: Jack Famous - 04.08.2022 10:59:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Попробуйте поиграться AutoFilterMode и FilterMode. С их помощью можно определить применен ли фильтр на листе или нет.
Код
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
 
janik1280, по ссылке из #4 — полная коллекция  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
:))) раскрыл
Страницы: 1
Наверх