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

Вход

Регистрация

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

 

= Мир MS Excel/Убрать мерцание экрана при выполнении кода - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Убрать мерцание экрана при выполнении кода (VBA+Excel)
Убрать мерцание экрана при выполнении кода
SGerman Дата: Вторник, 12.07.2016, 11:32 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Зравствуйте !
Почему-то далеко не всегда помогает отключение моргания стандартным способом

[vba]
Код
Application.ScreenUpdating = False
<Код>
Application.ScreenUpdating = True
[/vba]

Может быть, есть еще какие-нибудь хитрости для полного отключения ?

Спасибо за помощь


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеЗравствуйте !
Почему-то далеко не всегда помогает отключение моргания стандартным способом

[vba]
Код
Application.ScreenUpdating = False
<Код>
Application.ScreenUpdating = True
[/vba]

Может быть, есть еще какие-нибудь хитрости для полного отключения ?

Спасибо за помощь

Автор - SGerman
Дата добавления - 12.07.2016 в 11:32
Hugo Дата: Вторник, 12.07.2016, 13:25 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2662
Репутация: 599 ±
Замечаний: 0% ±

Здравствуйте.
Покажите пример в файле когда не помогает.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеЗдравствуйте.
Покажите пример в файле когда не помогает.

Автор - Hugo
Дата добавления - 12.07.2016 в 13:25
SGerman Дата: Вторник, 12.07.2016, 18:52 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Hugo, Проект слишком большой - xls>800 Kb


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеHugo, Проект слишком большой - xls>800 Kb

Автор - SGerman
Дата добавления - 12.07.2016 в 18:52
SGerman Дата: Вторник, 12.07.2016, 19:03 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Разобрался !!!

Дело было в том, что алгоритм вложенный: "кнопка" вызывает функцию, та в свою очередь в цикле другую функцию, а та и тоже в цикле - третью. И кругом стоит true/false. Когда все внутренние строчки переключения отображения закомментарил, мерцание исчезло.

Всем спасибо ! Проблема решена.


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеРазобрался !!!

Дело было в том, что алгоритм вложенный: "кнопка" вызывает функцию, та в свою очередь в цикле другую функцию, а та и тоже в цикле - третью. И кругом стоит true/false. Когда все внутренние строчки переключения отображения закомментарил, мерцание исчезло.

Всем спасибо ! Проблема решена.

Автор - SGerman
Дата добавления - 12.07.2016 в 19:03
RAN Дата: Вторник, 12.07.2016, 19:04 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4297
Репутация: 839 ±
Замечаний: 0% ±

2010
Может быть, есть еще какие-нибудь хитрости

Есть.
[vba]
Код
Call Макрос()
[/vba]
включает обновление экрана, и в этом макросе его снова нужно отключать.
Возврат в исходную процедуру - тоже.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Может быть, есть еще какие-нибудь хитрости

Есть.
[vba]
Код
Call Макрос()
[/vba]
включает обновление экрана, и в этом макросе его снова нужно отключать.
Возврат в исходную процедуру - тоже.

Автор - RAN
Дата добавления - 12.07.2016 в 19:04
SGerman Дата: Вторник, 12.07.2016, 19:08 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Уточнение.

Везде стояло, конечно же:
[vba]
Код
  Application.ScreenUpdating = False
  Application.ScreenUpdating = True
[/vba]

и экран моргал как ненормальный :)

Почему - так и не понял. Такое впечатление, что false на false дает true :)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеУточнение.

Везде стояло, конечно же:
[vba]
Код
  Application.ScreenUpdating = False
  Application.ScreenUpdating = True
[/vba]

и экран моргал как ненормальный :)

Почему - так и не понял. Такое впечатление, что false на false дает true :)

Автор - SGerman
Дата добавления - 12.07.2016 в 19:08
SGerman Дата: Вторник, 12.07.2016, 19:10 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
RAN,
У меня вообще нет Call Macros, как и самих макросов.
Весь код - на листах, формах и модулях - только Function и Sub


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеRAN,
У меня вообще нет Call Macros, как и самих макросов.
Весь код - на листах, формах и модулях - только Function и Sub

Автор - SGerman
Дата добавления - 12.07.2016 в 19:10
krosav4ig Дата: Вторник, 12.07.2016, 19:14 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1420
Репутация: 585 ±
Замечаний: 0% ±

Excel 2007, 2013
SGerman, ну вы хотя бы код покажите


(_)Õvõ(_)
 
Ответить
СообщениеSGerman, ну вы хотя бы код покажите

Автор - krosav4ig
Дата добавления - 12.07.2016 в 19:14
RAN Дата: Вторник, 12.07.2016, 19:18 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4297
Репутация: 839 ±
Замечаний: 0% ±

2010
У меня вообще нет Call Macros, как и самих макросов.

Весь код - на листах, формах и модулях - только Function и Sub

алгоритм вложенный: "кнопка" вызывает функцию, та в свою очередь в цикле другую функцию

hands


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
У меня вообще нет Call Macros, как и самих макросов.

Весь код - на листах, формах и модулях - только Function и Sub

алгоритм вложенный: "кнопка" вызывает функцию, та в свою очередь в цикле другую функцию

hands

Автор - RAN
Дата добавления - 12.07.2016 в 19:18
SGerman Дата: Вторник, 12.07.2016, 19:27 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Смех над теми, кто знает меньше, Вас ни в коем случае не украшает.
Проблема решена, я уже сказал. А цирк, он в другом месте. Или я не знаю местных традиций ?


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеСмех над теми, кто знает меньше, Вас ни в коем случае не украшает.
Проблема решена, я уже сказал. А цирк, он в другом месте. Или я не знаю местных традиций ?

Автор - SGerman
Дата добавления - 12.07.2016 в 19:27
SGerman Дата: Вторник, 12.07.2016, 19:29 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
krosav4ig, Минут 10 собирал куски кода, чтобы сложилась хотя бы приблизительная картинка.
В результате при добавлении поста ничего не добавилось :(


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
Сообщениеkrosav4ig, Минут 10 собирал куски кода, чтобы сложилась хотя бы приблизительная картинка.
В результате при добавлении поста ничего не добавилось :(

Автор - SGerman
Дата добавления - 12.07.2016 в 19:29
SGerman Дата: Вторник, 12.07.2016, 19:35 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
включает обновление экрана, и в этом макросе его снова нужно отключать.Возврат в исходную процедуру - тоже.


"Макрос" - это любой код, как я понял с Вашей веселой пиктограммки.
Так вот, именно так я и делал ! В каждом "макросе" в начале вырубал, в конце - врубал отображение.
И у меня все радостно моргало !
Когда же все внутренние переключения убрал, моргание исчезло.

Вот так-то


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
Сообщение
включает обновление экрана, и в этом макросе его снова нужно отключать.Возврат в исходную процедуру - тоже.


"Макрос" - это любой код, как я понял с Вашей веселой пиктограммки.
Так вот, именно так я и делал ! В каждом "макросе" в начале вырубал, в конце - врубал отображение.
И у меня все радостно моргало !
Когда же все внутренние переключения убрал, моргание исчезло.

Вот так-то

Автор - SGerman
Дата добавления - 12.07.2016 в 19:35
Manyasha Дата: Вторник, 12.07.2016, 19:50 | Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 1721
Репутация: 722 ±
Замечаний: 0% ±

Excel 2007, 2010
А цирк, он в другом месте
не дуйтесь. Если бы Вы поискали, что такое Call и поняли, что написали, то тоже бы посмеялись)
У меня вообще нет Call Macros, как и самих макросов.
...только Function и Sub
Sub - это и есть макрос.

Макрос внутри другого макроса можно вызвать так:
[vba]
Код
Sub t1()
'код
End Sub
Sub t2()
t1'Вызываем t1
End Sub
[/vba]
а можно так:
[vba]
Код
Sub t1()
'код
End Sub
Sub t2()
Call t1'Вызываем t1
End Sub
[/vba]

Андрей ( RAN) рассказал про особенность 2-го способа (Кстати, я про нее не знала. Андрей, спасибо за информацию! specool )

Еще одна особенность: Application.ScreenUpdating относится только к приложению Excel. Если Вы внутри макроса используете, например, word, в нем экран будет обновляться.
В каждом "макросе" в начале вырубал, в конце - врубал

Application - относится к запущенному приложению Excel, необязательно вырубать ScreenUpdating в каждом макросе (имеется в виду в цепочке связанных макросов).


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
А цирк, он в другом месте
не дуйтесь. Если бы Вы поискали, что такое Call и поняли, что написали, то тоже бы посмеялись)
У меня вообще нет Call Macros, как и самих макросов.
...только Function и Sub
Sub - это и есть макрос.

Макрос внутри другого макроса можно вызвать так:
[vba]
Код
Sub t1()
'код
End Sub
Sub t2()
t1'Вызываем t1
End Sub
[/vba]
а можно так:
[vba]
Код
Sub t1()
'код
End Sub
Sub t2()
Call t1'Вызываем t1
End Sub
[/vba]

Андрей ( RAN) рассказал про особенность 2-го способа (Кстати, я про нее не знала. Андрей, спасибо за информацию! specool )

Еще одна особенность: Application.ScreenUpdating относится только к приложению Excel. Если Вы внутри макроса используете, например, word, в нем экран будет обновляться.
В каждом "макросе" в начале вырубал, в конце - врубал

Application - относится к запущенному приложению Excel, необязательно вырубать ScreenUpdating в каждом макросе (имеется в виду в цепочке связанных макросов).

Автор - Manyasha
Дата добавления - 12.07.2016 в 19:50
_Boroda_ Дата: Вторник, 12.07.2016, 19:57 | Сообщение № 14
Группа: Модераторы
Ранг: Экселист
Сообщений: 9822
Репутация: 4147 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Application - относится к запущенному приложению Excel, необязательно вырубать ScreenUpdating в каждом макросе

Его вообще можно не вырубать. Он сам вырубается при выходе из макроса. Отсюда, кстати, следует то, что Андрей написал выше


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Application - относится к запущенному приложению Excel, необязательно вырубать ScreenUpdating в каждом макросе

Его вообще можно не вырубать. Он сам вырубается при выходе из макроса. Отсюда, кстати, следует то, что Андрей написал выше

Автор - _Boroda_
Дата добавления - 12.07.2016 в 19:57
SGerman Дата: Вторник, 12.07.2016, 20:05 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
Manyasha,
Спасибо, Марина ! Хотел новой благодарностью повысить Вашу репутацию в очередной раз, но не вышло - наверно "многабукав". Но почему не выдается предупреждение ?


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеManyasha,
Спасибо, Марина ! Хотел новой благодарностью повысить Вашу репутацию в очередной раз, но не вышло - наверно "многабукав". Но почему не выдается предупреждение ?

Автор - SGerman
Дата добавления - 12.07.2016 в 20:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Убрать мерцание экрана при выполнении кода (VBA+Excel)
Страница 1 из 11
Поиск:

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