Страницы: 1
RSS
Отключение обновление экрана, Не работает отключение обновления экрана в Excel 2016
 
Здравствуйте!

Наткнулся на работе на маленькую неприятность. Написал макрос для проверки данных из одного файла в другом и дабы не получить эпилептический припадок от мерцания экрана добавил в начале главной процедуры Application.ScreenUpdating = False , а в конце Application.ScreenUpdating = True. Всё отлично работало в оффисе 2007, но сейчас обновили на 2016 и, как результат, мерцание появилось. Прошу прощение за то, что не прилагаю файл ибо это конфиденциальная информация. Если кто-то стыкался с такой проблемой при переходе на новую версию оффиса, подскажите, пожалуйста, как пофиксить данную ситуацию.

Спасибо.
 
Попробовать создать пример. Удалите все секретное, листы, с которыми макрос не работает, внутри макроса закомментировать чего-нибудь. Возможно, выявите источник.
 
Окей, обязательно попробую, спасибо! Думал, может кто-то уже сталкивался с такой же проблемой, в плане корня проблемы: это из-за перехода на обновленный софт или просто я натупил где-то? Поэтому и интересуюсь, если из-за нового оффиса, то как пофиксить, чтобы не тратить время на долгие поиски.  
 
не работал с офис 2016, тем не менее уверен:
1) что Application.ScreenUpdating работает там так же как и во всех предыдущих версиях
2) проблема не в переходе на новую версию, а проблема в Вашем коде
достаточно сделать так:
Код
Sub X1
  Application.ScreenUpdating = False
  X2
  '  и все что написано тут после Х2 будет мигать по страшной силе
  Application.ScreenUpdating = True
end sub

Sub X2
  Application.ScreenUpdating = False
  ...
  Application.ScreenUpdating = True
end Sub
а универсально это пишется так
Код
Sub X2
  Dim aSU
  aSU = Application.ScreenUpdating:  Application.ScreenUpdating = False
  ...
  Application.ScreenUpdating = aSU
end Sub
а еще ошибки отследить, чтобы дело дошло до выполнения последней строки и восстановления значения переменной до ее начального состояния  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Согласен с Ігор Гончаренко
похоже где то внутри алгоритм проскакивает мимо выключателя экрана.
нужно расставить маркеры и попробовать отследить где именно. сначала поставить между крупными модулями, потом внутри найденного проблемного...

я бы поставил маркеры вокруг каждого выключателя экрана

......тут что то считается
   ThisWorkbook.Sheets("маркеры").Cells(1, 1) = "1_1 OK"
   Application.ScreenUpdating = False
   ThisWorkbook.Sheets("маркеры").Cells(2, 1) = "1_2 OK"
......тут что то считается
   ThisWorkbook.Sheets("маркеры").Cells(4, 1) = "2_1 OK"
   Application.ScreenUpdating = False
   ThisWorkbook.Sheets("маркеры").Cells(5, 1) = "2_2 OK"
......тут что то считается

с выводом результата на доп лист
Изменено: ВовавВова - 09.12.2024 18:56:43
недавно познакомился с Excel (мимо проходил)
 
Попробуйте так.
Код
Application.ScreenUpdating = False
' ваш код здесь
DoEvents
Application.ScreenUpdating = True
Страницы: 1
Наверх