Здравствуйте! Решил вот перейти с Microsoft Office 2010 на Microsoft Office 2016. Использую Excel вместе с макросами и заметил, точнее замерил время выполнения одного и того же макроса в Excel 2010 и Excel 2016. Разница в 2-2,5 раза быстрее в пользу Excel 2016. В макросах я использую отключение перерисовки объектов на экране Application.ScreenUpdating = False с последующим включением перерисовки объектов (при соблюдение некоторого условия) для того чтобы увидеть промежуточные данные и сразу снова отключаю перерисовку объектов. Может кто ни будь из форумчан сталкивался со следующей проблемой. При работе в Excel 2010 данные на экране после включения перерисовки объектов на экране с последующим выключением перерисовки, «отрисовываются» нормально то есть экран обновляется без глюков. А в Excel 2016 данные на экране не обновляются, не идет перерисовка, может пропасть отображение интерфейса Excel 2016 или (и) данных на листе, просто белое поле. После отработки макроса на экране отрисовывается конечный результат. У меня детское предположение, возможно Excel 2016 такой шустряк, что не успевает перерисовать экран при включении перерисовки и сразу ее выключением, то есть команды идут одна за другой, пример
[vba]
Код
If A=B Then Application.ScreenUpdating = False Application.ScreenUpdating = True
[/vba]
Повторюсь в Excel 2010 перерисовка идет нормально. В чем может быть причина??? Спасибо!!!
Здравствуйте! Решил вот перейти с Microsoft Office 2010 на Microsoft Office 2016. Использую Excel вместе с макросами и заметил, точнее замерил время выполнения одного и того же макроса в Excel 2010 и Excel 2016. Разница в 2-2,5 раза быстрее в пользу Excel 2016. В макросах я использую отключение перерисовки объектов на экране Application.ScreenUpdating = False с последующим включением перерисовки объектов (при соблюдение некоторого условия) для того чтобы увидеть промежуточные данные и сразу снова отключаю перерисовку объектов. Может кто ни будь из форумчан сталкивался со следующей проблемой. При работе в Excel 2010 данные на экране после включения перерисовки объектов на экране с последующим выключением перерисовки, «отрисовываются» нормально то есть экран обновляется без глюков. А в Excel 2016 данные на экране не обновляются, не идет перерисовка, может пропасть отображение интерфейса Excel 2016 или (и) данных на листе, просто белое поле. После отработки макроса на экране отрисовывается конечный результат. У меня детское предположение, возможно Excel 2016 такой шустряк, что не успевает перерисовать экран при включении перерисовки и сразу ее выключением, то есть команды идут одна за другой, пример
[vba]
Код
If A=B Then Application.ScreenUpdating = False Application.ScreenUpdating = True
[/vba]
Повторюсь в Excel 2010 перерисовка идет нормально. В чем может быть причина??? Спасибо!!!djon2012
Судя по описанию проблемы - причина скорее всего именно в 2016 Помните "Windows Vista"? Как-то и не вспоминают ее уже. Возможно, и 2016 такая же участь ждет. Я до сих пор работаю в 2007 и XP (почти 2003), и все устраивает. Конечно, в новых версиях есть новые полезные и хорошие функции, но... От добра добра не ищут Каждому из нас дана возможность выбора
Судя по описанию проблемы - причина скорее всего именно в 2016 Помните "Windows Vista"? Как-то и не вспоминают ее уже. Возможно, и 2016 такая же участь ждет. Я до сих пор работаю в 2007 и XP (почти 2003), и все устраивает. Конечно, в новых версиях есть новые полезные и хорошие функции, но... От добра добра не ищут Каждому из нас дана возможность выбора_Igor_61
bmv98rus спасибо за совет. Вставил doeventы между переключением блокировки прорисовки. Макрос для примера шото я намудрил выдает ошипку, не могу понять что здесь не така: [vba]
Код
Sub qqq() For k = 1 To 1000000 If k Mod 100 = 0 Then Aplication.ScreenUpdating = True Cells(1, 1) = k DoEvents Application.ScreenUpdating = False End If Next k End Sub
[/vba]
bmv98rus спасибо за совет. Вставил doeventы между переключением блокировки прорисовки. Макрос для примера шото я намудрил выдает ошипку, не могу понять что здесь не така: [vba]
Код
Sub qqq() For k = 1 To 1000000 If k Mod 100 = 0 Then Aplication.ScreenUpdating = True Cells(1, 1) = k DoEvents Application.ScreenUpdating = False End If Next k End Sub
bmv98rus разделил на 2 строчки, обновил макрос: [vba]
Код
Sub qqq() For k = 1 To 1000000 If k Mod 100 = 0 Then Aplication.ScreenUpdating = True Cells(1, 1) = k DoEvents_ Application.ScreenUpdating = False End If Next k End Sub
[/vba] выдает следующую ошибку Compile error: Sub or Function not defined
bmv98rus разделил на 2 строчки, обновил макрос: [vba]
Код
Sub qqq() For k = 1 To 1000000 If k Mod 100 = 0 Then Aplication.ScreenUpdating = True Cells(1, 1) = k DoEvents_ Application.ScreenUpdating = False End If Next k End Sub
[/vba] выдает следующую ошибку Compile error: Sub or Function not defineddjon2012
Сообщение отредактировал djon2012 - Суббота, 21.04.2018, 12:18