Страницы: 1
RSS
Перезапуск макроса сразу после обновления данных в таблице
 
Есть макрос с таким кодом:
Код
Sub Upd()
    ActiveWorkbook.RefreshAll
    Application.OnTime Now + TimeValue("00:00:07"), "Upd"
End Sub

Этот макрос перезапускается после каждых 7 секунд. Проблема в том, что макрос обновить данные в таблице не всегда успевает через каждые 7 секунд, что приводит к зависанию системы. Как доработать этот макрос чтобы он перезапускался сразу после завершения своей работы, а не через каждые N секунд.
Изменено: amibus - 03.01.2019 16:10:48
 
Код
Sub Upd()
   ActiveWorkbook.RefreshAll
   DoEvents
   Call Upd
End Sub
Согласие есть продукт при полном непротивлении сторон
 

Предложенный макрос выдает ошибку
 
Рекурсия однако. Но Вы же ее и просили ;)
Цитата
amibus написал: чтобы он перезапускался сразу после завершения своей работы
Вставьте DoEvents в свой макрос и добавьте еще секунд
Код
Sub Upd()
    ActiveWorkbook.RefreshAll
    DoEvents
    Application.OnTime Now + TimeValue("00:00:10"), "Upd"
End Sub
Изменено: Sanja - 03.01.2019 16:26:54
Согласие есть продукт при полном непротивлении сторон
 
В написании макросов я не селен, но приведенный мною код хотя бы работал при условии если установить интервал обновление данных на странице не менее 10 секунд. С рекурсией однако я не знаком, но мне необходим работающий код.   Как вариант код, макрос который ЭННОЕ (число задается произвольно) количество раз обновляет данные на странице сразу после окончания своей работы (цикл многократного повторного выполнения макроса). Есть ли работающие варианты?
 
Цитата
amibus написал:
я не селен
А никто и не сомневался: селен - это химический элемент ))
 
А никто и не писал что селен это про макросы. Ты прав СЕЛЕН-СЕЛЁН
Изменено: amibus - 04.01.2019 09:09:03
 
amibus, DoEvents помогло? (см.сообщение 4)
Согласие есть продукт при полном непротивлении сторон
 
Спасибо Sanja добавлением функции DoEvents программа работать стала корректно. Именно эта задача решена, но есть еще куча др. не решенных задач. Но это уже другая тема из другой области
 
amibus, силен - от слова сИла
Страницы: 1
Наверх