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

Вход

Регистрация

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

 

= Мир MS Excel/Не обновляются данные на экране при работе макроса. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Не обновляются данные на экране при работе макроса. (Формулы/Formulas)
Не обновляются данные на экране при работе макроса.
djon2012 Дата: Пятница, 20.04.2018, 20:16 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

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 перерисовка идет нормально. В чем может быть причина???
Спасибо!!!
 
Ответить
СообщениеЗдравствуйте!
Решил вот перейти с 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
Дата добавления - 20.04.2018 в 20:16
Nic70y Дата: Пятница, 20.04.2018, 20:53 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8702
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
такая же фигня в 2013
так видно
[vba]
Код
    Range("I6") = 1
    Application.Wait Now + TimeSerial(0, 0, 4)
    Application.ScreenUpdating = False
    Range("I7") = 2
[/vba]
так нет
[vba]
Код
    Range("I6") = 1
    Application.ScreenUpdating = False
    Application.Wait Now + TimeSerial(0, 0, 4)
    Range("I7") = 2
[/vba]а в 2010 видно


ЮMoney 41001841029809
 
Ответить
Сообщениетакая же фигня в 2013
так видно
[vba]
Код
    Range("I6") = 1
    Application.Wait Now + TimeSerial(0, 0, 4)
    Application.ScreenUpdating = False
    Range("I7") = 2
[/vba]
так нет
[vba]
Код
    Range("I6") = 1
    Application.ScreenUpdating = False
    Application.Wait Now + TimeSerial(0, 0, 4)
    Range("I7") = 2
[/vba]а в 2010 видно

Автор - Nic70y
Дата добавления - 20.04.2018 в 20:53
_Igor_61 Дата: Пятница, 20.04.2018, 20:58 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Судя по описанию проблемы - причина скорее всего именно в 2016 :)
Помните "Windows Vista"? Как-то и не вспоминают ее уже. Возможно, и 2016 такая же участь ждет. Я до сих пор работаю в 2007 и XP (почти 2003), и все устраивает. Конечно, в новых версиях есть новые полезные и хорошие функции, но... От добра добра не ищут :) Каждому из нас дана возможность выбора
 
Ответить
СообщениеСудя по описанию проблемы - причина скорее всего именно в 2016 :)
Помните "Windows Vista"? Как-то и не вспоминают ее уже. Возможно, и 2016 такая же участь ждет. Я до сих пор работаю в 2007 и XP (почти 2003), и все устраивает. Конечно, в новых версиях есть новые полезные и хорошие функции, но... От добра добра не ищут :) Каждому из нас дана возможность выбора

Автор - _Igor_61
Дата добавления - 20.04.2018 в 20:58
bmv98rus Дата: Пятница, 20.04.2018, 21:06 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
djon2012, Попробуйте do event вставить межде переключением блокировки прорисовки.
_Igor_61, вот как раз 2007 сродни Vista и даже 8/8.1.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеdjon2012, Попробуйте do event вставить межде переключением блокировки прорисовки.
_Igor_61, вот как раз 2007 сродни Vista и даже 8/8.1.

Автор - bmv98rus
Дата добавления - 20.04.2018 в 21:06
djon2012 Дата: Пятница, 20.04.2018, 23:17 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо всем откликнувшимся! Буду пробовать.
 
Ответить
СообщениеСпасибо всем откликнувшимся! Буду пробовать.

Автор - djon2012
Дата добавления - 20.04.2018 в 23:17
djon2012 Дата: Суббота, 21.04.2018, 09:26 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
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]


Сообщение отредактировал djon2012 - Суббота, 21.04.2018, 12:12
 
Ответить
Сообщение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]

Автор - djon2012
Дата добавления - 21.04.2018 в 09:26
bmv98rus Дата: Суббота, 21.04.2018, 12:09 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
[vba]
Код
If k Mod 100 = 0 Then Aplication.ScreenUpdating = True
[/vba]- разделите на две строчки.
[vba]
Код
If k Mod 100 = 0 Then
  Application.ScreenUpdating = True
[/vba]-


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 21.04.2018, 12:14
 
Ответить
Сообщение[vba]
Код
If k Mod 100 = 0 Then Aplication.ScreenUpdating = True
[/vba]- разделите на две строчки.
[vba]
Код
If k Mod 100 = 0 Then
  Application.ScreenUpdating = True
[/vba]-

Автор - bmv98rus
Дата добавления - 21.04.2018 в 12:09
djon2012 Дата: Суббота, 21.04.2018, 12:17 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
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


Сообщение отредактировал djon2012 - Суббота, 21.04.2018, 12:18
 
Ответить
Сообщение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

Автор - djon2012
Дата добавления - 21.04.2018 в 12:17
bmv98rus Дата: Суббота, 21.04.2018, 12:33 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4098
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Думал обратите внимание Aplication.ScreenUpdating нужно два p Application


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 21.04.2018, 12:33
 
Ответить
СообщениеДумал обратите внимание Aplication.ScreenUpdating нужно два p Application

Автор - bmv98rus
Дата добавления - 21.04.2018 в 12:33
djon2012 Дата: Суббота, 21.04.2018, 12:59 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
bmv98rus спасибо, действительно не заметил недостающую букву, да и со зрением у меня проблемы -6,5 диоптрий.
 
Ответить
Сообщениеbmv98rus спасибо, действительно не заметил недостающую букву, да и со зрением у меня проблемы -6,5 диоптрий.

Автор - djon2012
Дата добавления - 21.04.2018 в 12:59
djon2012 Дата: Вторник, 24.04.2018, 17:37 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Nic70y спасибо вам БОЛЬШОЕ за подсказку, отличный вариант.
 
Ответить
СообщениеNic70y спасибо вам БОЛЬШОЕ за подсказку, отличный вариант.

Автор - djon2012
Дата добавления - 24.04.2018 в 17:37
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Не обновляются данные на экране при работе макроса. (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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