Отключаем обновление экрана в начале макроса, в конце включаем. Вопрос - а обязательно включать? Вроде как и без включения, после завершения макроса он обновляется. Или я чего-то не понимаю? Подскажите тупому пожалуйста.
Отключаем обновление экрана в начале макроса, в конце включаем. Вопрос - а обязательно включать? Вроде как и без включения, после завершения макроса он обновляется. Или я чего-то не понимаю? Подскажите тупому пожалуйста.Nic70y
Nic70y, Добрый день. Лично у меня в любом случае необходимость включить после отключения остаётся, поскольку всё-таки, с отключенным обновлением не видно не только изменений, которые я выполняю в той или иной ячейке, но и просто какая ячейка выделена.
Nic70y, Добрый день. Лично у меня в любом случае необходимость включить после отключения остаётся, поскольку всё-таки, с отключенным обновлением не видно не только изменений, которые я выполняю в той или иной ячейке, но и просто какая ячейка выделена.Roman777
Nic70y, Что-то тут не чисто, у меня код отрабатывает, а лист остаётся пустым, до тех пор пока не включу скринАпдейтинг... и честно говоря, не пойму, почему вы могли бы видеть результат (если изначально ячейка А1 была пуста). Мб у Вас в коде всё-таки есть включение, или действие, после которого Application.ScreenUpdating становится равным True (если такие действия существуют...)
Nic70y, Что-то тут не чисто, у меня код отрабатывает, а лист остаётся пустым, до тех пор пока не включу скринАпдейтинг... и честно говоря, не пойму, почему вы могли бы видеть результат (если изначально ячейка А1 была пуста). Мб у Вас в коде всё-таки есть включение, или действие, после которого Application.ScreenUpdating становится равным True (если такие действия существуют...)Roman777
Возможно дело в разных версиях excel. У меня на 10м тоже все отображается не зависимо от включение/выключения обновления экрана. Отключение обновления помогает когда операции на нескольких листах, убирает мелькание.
Возможно дело в разных версиях excel. У меня на 10м тоже все отображается не зависимо от включение/выключения обновления экрана. Отключение обновления помогает когда операции на нескольких листах, убирает мелькание.Vemod
Как я понял по переписке разработчиков ОТСЮДА (инглиш), в ранних версиях Excel компания Microsoft разрешала разработчикам больший контроль над свойством Application.ScreenUpdating. И можно было его отключить и само оно уже включается при определённых условиях. Однако в последующих версиях компания принудительно ввела "перезагрузку" метода. Таким образом, в новых версиях (там не понятно, каких именно) после того, как макрос отрабатывает - изменённая им настройка Application.ScreenUpdating возвращается в прежнее русло.
Особо отмечается, что если перевести выполнение макроса в пошаговый режим (с помощью F8 клавиши выполнять по 1-й строке кода), то свойство Application.ScreenUpdating всегда будет True независимо от установленной разработчиком. И отслеживать реальное состояние этого свойства можно будет только с помощью ввода булевой переменной, которая будет дублировать значение свойства при изменениях.
Упоминается, что "перезагрузка" Application.ScreenUpdating свойства происходит, когда задействуется другой макрос (?) или модуль.
Помимо прочего нашёл в сети упоминания, что можно работать со свойством Application.StatusBar и оно всегда будет отображаться в экселе с учётом изменений даже при выключенном обновлении экрана. Опробовал - можно задавать текст строки, которая в моём 2013-м Экселе показана в самом низу, рядом с кнопкой записи макроса. Также в обход отключенного обновления экрана работает и обновление внешнего вида формы с помощью метода .RePaint.
Возвращаясь к изначальному вопросу. Судя по всему, да, включать крайне желательно. Ведь поведение программы разработчики меняли со временем и нет никакой уверенности, что во всех версиях свойство будет работать одинаково. Причём в официальной документации нет никакого уточнения о том, как метод работает, просто рекомендация вернуть свойство в изначальное положение после завершения работы с ним.
Nic70y, привет!
Как я понял по переписке разработчиков ОТСЮДА (инглиш), в ранних версиях Excel компания Microsoft разрешала разработчикам больший контроль над свойством Application.ScreenUpdating. И можно было его отключить и само оно уже включается при определённых условиях. Однако в последующих версиях компания принудительно ввела "перезагрузку" метода. Таким образом, в новых версиях (там не понятно, каких именно) после того, как макрос отрабатывает - изменённая им настройка Application.ScreenUpdating возвращается в прежнее русло.
Особо отмечается, что если перевести выполнение макроса в пошаговый режим (с помощью F8 клавиши выполнять по 1-й строке кода), то свойство Application.ScreenUpdating всегда будет True независимо от установленной разработчиком. И отслеживать реальное состояние этого свойства можно будет только с помощью ввода булевой переменной, которая будет дублировать значение свойства при изменениях.
Упоминается, что "перезагрузка" Application.ScreenUpdating свойства происходит, когда задействуется другой макрос (?) или модуль.
Помимо прочего нашёл в сети упоминания, что можно работать со свойством Application.StatusBar и оно всегда будет отображаться в экселе с учётом изменений даже при выключенном обновлении экрана. Опробовал - можно задавать текст строки, которая в моём 2013-м Экселе показана в самом низу, рядом с кнопкой записи макроса. Также в обход отключенного обновления экрана работает и обновление внешнего вида формы с помощью метода .RePaint.
Возвращаясь к изначальному вопросу. Судя по всему, да, включать крайне желательно. Ведь поведение программы разработчики меняли со временем и нет никакой уверенности, что во всех версиях свойство будет работать одинаково. Причём в официальной документации нет никакого уточнения о том, как метод работает, просто рекомендация вернуть свойство в изначальное положение после завершения работы с ним.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Понедельник, 27.07.2015, 14:07
Роман, спасибо за разъяснение. Так оно и было Application.ScreenUpdating начал использовать с MSO 2010 и когда макрос вызывал другой макрос, то приходилось в другом макросе прописывать откл.
Роман, спасибо за разъяснение. Так оно и было Application.ScreenUpdating начал использовать с MSO 2010 и когда макрос вызывал другой макрос, то приходилось в другом макросе прописывать откл.Nic70y