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

Вход

Регистрация

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

 

= Мир MS Excel/OpenForms = DoEvents - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » OpenForms = DoEvents (Можно поподробнее про эту команду)
OpenForms = DoEvents
light26 Дата: Воскресенье, 02.09.2012, 09:30 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет. Осваивая VBA, столкнулся с новой задачей: как сделать паузу в выполнении макроса с ожиданием действия пользователя.
Нашел в справке команду OpenForms = DoEvents. Можно подробней про нее. А то у меня справка английская, а скаченные русские не открываются.


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 02.09.2012, 11:10
 
Ответить
СообщениеВсем привет. Осваивая VBA, столкнулся с новой задачей: как сделать паузу в выполнении макроса с ожиданием действия пользователя.
Нашел в справке команду OpenForms = DoEvents. Можно подробней про нее. А то у меня справка английская, а скаченные русские не открываются.

Автор - light26
Дата добавления - 02.09.2012 в 09:30
nerv Дата: Воскресенье, 02.09.2012, 11:36 | Сообщение № 2
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±



Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщениеhttp://translate.google.ru

Автор - nerv
Дата добавления - 02.09.2012 в 11:36
light26 Дата: Воскресенье, 02.09.2012, 11:40 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (nerv)
http://translate.google.ru

А что толку-то? Я знаю про переводчики. Только как мне в поиске набрать то, что мне нужно? В данном случае я набирал Pause. Но не факт, что я поисковой запрос сделал правильно.


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (nerv)
http://translate.google.ru

А что толку-то? Я знаю про переводчики. Только как мне в поиске набрать то, что мне нужно? В данном случае я набирал Pause. Но не факт, что я поисковой запрос сделал правильно.

Автор - light26
Дата добавления - 02.09.2012 в 11:40
ABC Дата: Воскресенье, 02.09.2012, 11:52 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
Справочнике VBA можете прочитать


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
СообщениеСправочнике VBA можете прочитать

Автор - ABC
Дата добавления - 02.09.2012 в 11:52
light26 Дата: Воскресенье, 02.09.2012, 12:01 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (ABC)
Справочнике VBA можете прочитать

Ну вот, совсем другое дело ))) Спасибо


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (ABC)
Справочнике VBA можете прочитать

Ну вот, совсем другое дело ))) Спасибо

Автор - light26
Дата добавления - 02.09.2012 в 12:01
ABC Дата: Воскресенье, 02.09.2012, 12:13 | Сообщение № 6
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
если в примеру:
с перво попробуйте этот код, после запуска сразу же выделите любую ячейку и любую значение вводите в ячейку

во вторых точьно так же, как пробовали в первом, увидите разницу


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Воскресенье, 02.09.2012, 12:19
 
Ответить
Сообщениеесли в примеру:
с перво попробуйте этот код, после запуска сразу же выделите любую ячейку и любую значение вводите в ячейку

во вторых точьно так же, как пробовали в первом, увидите разницу

Автор - ABC
Дата добавления - 02.09.2012 в 12:13
Hugo Дата: Воскресенье, 02.09.2012, 12:29 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
В первом примере достаточно просто
[vba]
Code
DoEvents
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВ первом примере достаточно просто
[vba]
Code
DoEvents
[/vba]

Автор - Hugo
Дата добавления - 02.09.2012 в 12:29
light26 Дата: Воскресенье, 02.09.2012, 12:29 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Ну, собственно, кроме того что второй вариант выполняется дольше, других отличий не нашел


Я не волшебник. Я только учусь
 
Ответить
СообщениеНу, собственно, кроме того что второй вариант выполняется дольше, других отличий не нашел

Автор - light26
Дата добавления - 02.09.2012 в 12:29
Hugo Дата: Воскресенье, 02.09.2012, 12:33 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Дольше выполняется первый вариант! smile


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДольше выполняется первый вариант! smile

Автор - Hugo
Дата добавления - 02.09.2012 в 12:33
fairylive Дата: Суббота, 04.07.2020, 01:25 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Как я понял DoEvents приостанавливает макрос и даёт выполниться другим процессам. Это позволяет например не дать макросу повиснуть если что-то пошло не так. Посему полезно наверно включить в долгие циклы. Впрочем поигравшись с кодом выше - заполнением ячеек, обнаружил, что Doevents замедляет макрос.

Но залез я на форум чтобы рассказать как мне удалось ускорить свою программу благодаря DoEvents. Программа из двух табличек в экселе делает документ ворд. В одном файле обрабатывалось 300 строк в другом 5000 и в итоге получалось примерно 900 листов ворда. Сначала я сделал - лишь бы работало. Потом поизбавлялся от разных Select Selections выключил проверку орфографии и прочее. Это ускорило макрос значительно. Но всё равно итоговый вариант работал примерно 45-50секунд. Потом я решил прикрутить прогресс бар, чтобы пользователь видел что макрос работает, что ничего не зависло и смотрел как медленно заполняется зелёная полоска. В итоге прогресс баров получилось аж 3 штуки. Так как в коде три больших цикла. Но самое главное что макрос стал работать быстрее! Примерно на 10-15 секунд. Сейчас программа работает где-то 30 секунд если выключить все фоновые проги. И помог в этом ускорении именно DoEvents. Вот кусок кода как пример:
 
Ответить
СообщениеКак я понял DoEvents приостанавливает макрос и даёт выполниться другим процессам. Это позволяет например не дать макросу повиснуть если что-то пошло не так. Посему полезно наверно включить в долгие циклы. Впрочем поигравшись с кодом выше - заполнением ячеек, обнаружил, что Doevents замедляет макрос.

Но залез я на форум чтобы рассказать как мне удалось ускорить свою программу благодаря DoEvents. Программа из двух табличек в экселе делает документ ворд. В одном файле обрабатывалось 300 строк в другом 5000 и в итоге получалось примерно 900 листов ворда. Сначала я сделал - лишь бы работало. Потом поизбавлялся от разных Select Selections выключил проверку орфографии и прочее. Это ускорило макрос значительно. Но всё равно итоговый вариант работал примерно 45-50секунд. Потом я решил прикрутить прогресс бар, чтобы пользователь видел что макрос работает, что ничего не зависло и смотрел как медленно заполняется зелёная полоска. В итоге прогресс баров получилось аж 3 штуки. Так как в коде три больших цикла. Но самое главное что макрос стал работать быстрее! Примерно на 10-15 секунд. Сейчас программа работает где-то 30 секунд если выключить все фоновые проги. И помог в этом ускорении именно DoEvents. Вот кусок кода как пример:

Автор - fairylive
Дата добавления - 04.07.2020 в 01:25
Мир MS Excel » Вопросы и решения » Вопросы по Excel » OpenForms = DoEvents (Можно поподробнее про эту команду)
  • Страница 1 из 1
  • 1
Поиск:

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