Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Application.ScreenUpdating = 0 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Application.ScreenUpdating = 0 (Макросы/Sub)
Application.ScreenUpdating = 0
Nic70y Дата: Понедельник, 27.07.2015, 12:28 | Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 8761
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Отключаем обновление экрана в начале макроса,
в конце включаем.
Вопрос - а обязательно включать?
Вроде как и без включения, после завершения макроса он обновляется.
Или я чего-то не понимаю?
Подскажите тупому пожалуйста.


ЮMoney 41001841029809
 
Ответить
СообщениеОтключаем обновление экрана в начале макроса,
в конце включаем.
Вопрос - а обязательно включать?
Вроде как и без включения, после завершения макроса он обновляется.
Или я чего-то не понимаю?
Подскажите тупому пожалуйста.

Автор - Nic70y
Дата добавления - 27.07.2015 в 12:28
Roman777 Дата: Понедельник, 27.07.2015, 13:10 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Nic70y, Добрый день.
Лично у меня в любом случае необходимость включить после отключения остаётся, поскольку всё-таки, с отключенным обновлением не видно не только изменений, которые я выполняю в той или иной ячейке, но и просто какая ячейка выделена.


Много чего не знаю!!!!
 
Ответить
СообщениеNic70y, Добрый день.
Лично у меня в любом случае необходимость включить после отключения остаётся, поскольку всё-таки, с отключенным обновлением не видно не только изменений, которые я выполняю в той или иной ячейке, но и просто какая ячейка выделена.

Автор - Roman777
Дата добавления - 27.07.2015 в 13:10
Nic70y Дата: Понедельник, 27.07.2015, 13:24 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8761
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
ну например
[vba]
Код
Sub tipakod()
      Application.ScreenUpdating = 0
      [a1] = "8"
End Sub
[/vba]и все ок.
не, наверное я все-таки туплю...


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Понедельник, 27.07.2015, 13:24
 
Ответить
Сообщениену например
[vba]
Код
Sub tipakod()
      Application.ScreenUpdating = 0
      [a1] = "8"
End Sub
[/vba]и все ок.
не, наверное я все-таки туплю...

Автор - Nic70y
Дата добавления - 27.07.2015 в 13:24
Roman777 Дата: Понедельник, 27.07.2015, 13:31 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Nic70y, Что-то тут не чисто, у меня код отрабатывает, а лист остаётся пустым, до тех пор пока не включу скринАпдейтинг... и честно говоря, не пойму, почему вы могли бы видеть результат (если изначально ячейка А1 была пуста). Мб у Вас в коде всё-таки есть включение, или действие, после которого Application.ScreenUpdating становится равным True (если такие действия существуют...)


Много чего не знаю!!!!
 
Ответить
СообщениеNic70y, Что-то тут не чисто, у меня код отрабатывает, а лист остаётся пустым, до тех пор пока не включу скринАпдейтинг... и честно говоря, не пойму, почему вы могли бы видеть результат (если изначально ячейка А1 была пуста). Мб у Вас в коде всё-таки есть включение, или действие, после которого Application.ScreenUpdating становится равным True (если такие действия существуют...)

Автор - Roman777
Дата добавления - 27.07.2015 в 13:31
Nic70y Дата: Понедельник, 27.07.2015, 13:36 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 8761
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Не, я не махлюю,
уже много раз так делал.

К сообщению приложен файл: 7653407.gif (12.8 Kb) · 9462097.gif (7.1 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Понедельник, 27.07.2015, 13:37
 
Ответить
СообщениеНе, я не махлюю,
уже много раз так делал.


Автор - Nic70y
Дата добавления - 27.07.2015 в 13:36
Vemod Дата: Понедельник, 27.07.2015, 14:03 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Возможно дело в разных версиях excel. У меня на 10м тоже все отображается не зависимо от включение/выключения обновления экрана.
Отключение обновления помогает когда операции на нескольких листах, убирает мелькание.
 
Ответить
СообщениеВозможно дело в разных версиях excel. У меня на 10м тоже все отображается не зависимо от включение/выключения обновления экрана.
Отключение обновления помогает когда операции на нескольких листах, убирает мелькание.

Автор - Vemod
Дата добавления - 27.07.2015 в 14:03
Rioran Дата: Понедельник, 27.07.2015, 14:05 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Nic70y, привет!

Как я понял по переписке разработчиков ОТСЮДА (инглиш), в ранних версиях Excel компания Microsoft разрешала разработчикам больший контроль над свойством Application.ScreenUpdating. И можно было его отключить и само оно уже включается при определённых условиях. Однако в последующих версиях компания принудительно ввела "перезагрузку" метода. Таким образом, в новых версиях (там не понятно, каких именно) после того, как макрос отрабатывает - изменённая им настройка Application.ScreenUpdating возвращается в прежнее русло.

Особо отмечается, что если перевести выполнение макроса в пошаговый режим (с помощью F8 клавиши выполнять по 1-й строке кода), то свойство Application.ScreenUpdating всегда будет True независимо от установленной разработчиком. И отслеживать реальное состояние этого свойства можно будет только с помощью ввода булевой переменной, которая будет дублировать значение свойства при изменениях.

Упоминается, что "перезагрузка" Application.ScreenUpdating свойства происходит, когда задействуется другой макрос (?) или модуль.

Помимо прочего нашёл в сети упоминания, что можно работать со свойством Application.StatusBar и оно всегда будет отображаться в экселе с учётом изменений даже при выключенном обновлении экрана. Опробовал - можно задавать текст строки, которая в моём 2013-м Экселе показана в самом низу, рядом с кнопкой записи макроса. Также в обход отключенного обновления экрана работает и обновление внешнего вида формы с помощью метода .RePaint.

Вопрос - а обязательно включать?

Возвращаясь к изначальному вопросу. Судя по всему, да, включать крайне желательно. Ведь поведение программы разработчики меняли со временем и нет никакой уверенности, что во всех версиях свойство будет работать одинаково. Причём в официальной документации нет никакого уточнения о том, как метод работает, просто рекомендация вернуть свойство в изначальное положение после завершения работы с ним.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 27.07.2015, 14:07
 
Ответить
СообщениеNic70y, привет!

Как я понял по переписке разработчиков ОТСЮДА (инглиш), в ранних версиях Excel компания Microsoft разрешала разработчикам больший контроль над свойством Application.ScreenUpdating. И можно было его отключить и само оно уже включается при определённых условиях. Однако в последующих версиях компания принудительно ввела "перезагрузку" метода. Таким образом, в новых версиях (там не понятно, каких именно) после того, как макрос отрабатывает - изменённая им настройка Application.ScreenUpdating возвращается в прежнее русло.

Особо отмечается, что если перевести выполнение макроса в пошаговый режим (с помощью F8 клавиши выполнять по 1-й строке кода), то свойство Application.ScreenUpdating всегда будет True независимо от установленной разработчиком. И отслеживать реальное состояние этого свойства можно будет только с помощью ввода булевой переменной, которая будет дублировать значение свойства при изменениях.

Упоминается, что "перезагрузка" Application.ScreenUpdating свойства происходит, когда задействуется другой макрос (?) или модуль.

Помимо прочего нашёл в сети упоминания, что можно работать со свойством Application.StatusBar и оно всегда будет отображаться в экселе с учётом изменений даже при выключенном обновлении экрана. Опробовал - можно задавать текст строки, которая в моём 2013-м Экселе показана в самом низу, рядом с кнопкой записи макроса. Также в обход отключенного обновления экрана работает и обновление внешнего вида формы с помощью метода .RePaint.

Вопрос - а обязательно включать?

Возвращаясь к изначальному вопросу. Судя по всему, да, включать крайне желательно. Ведь поведение программы разработчики меняли со временем и нет никакой уверенности, что во всех версиях свойство будет работать одинаково. Причём в официальной документации нет никакого уточнения о том, как метод работает, просто рекомендация вернуть свойство в изначальное положение после завершения работы с ним.

Автор - Rioran
Дата добавления - 27.07.2015 в 14:05
Nic70y Дата: Понедельник, 27.07.2015, 14:12 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 8761
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Роман, спасибо за разъяснение.
Так оно и было
Application.ScreenUpdating начал использовать с MSO 2010
и когда макрос вызывал другой макрос, то приходилось в другом макросе прописывать откл.


ЮMoney 41001841029809
 
Ответить
СообщениеРоман, спасибо за разъяснение.
Так оно и было
Application.ScreenUpdating начал использовать с MSO 2010
и когда макрос вызывал другой макрос, то приходилось в другом макросе прописывать откл.

Автор - Nic70y
Дата добавления - 27.07.2015 в 14:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Application.ScreenUpdating = 0 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!