Как стать автором
Обновить

Как запланировать повторяющийся запуск VBA-процедуры в MS Excel без Application.OnTime

Время на прочтение 1 мин
Количество просмотров 2.3K
Автор оригинала: Владимир Латышенко

В этой статье мы продемонстрируем простую альтернативу Application.OnTime для периодического запуска VBA-процедур в MS Excel.

Предположим, что мы связали рабочую книгу MS Excel с каким-то внешним источником данных (напр., листом MS SharePoint или базой данных MS Access) и что данные автоматически обновляются каждые 2 минуты пока рабочая книга открыта, – это можно настроить при помощи Подключений.

Предположим также, что наша рабочая книга обрабатывает импортированные данные и что результат этих вычислений должен быть виден другим рабочим книгам, – для реализации последнего требования мы должны сохранять нашу рабочую книгу.

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

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xDiAl As Boolean
    xDiAl = Application.DisplayAlerts
    Application.DisplayAlerts = False
    ThisWorkbook.Save
    Application.DisplayAlerts = xDiAl
End Sub

Событие Worksheet_Change запускается каждый раз после импорта внешних данных (даже если не было никаких изменений в данных) и, в свою очередь, может запускать подпроцедуру, как показано в Программном коде 2.

Private Sub Worksheet_Change(ByVal Target As Range)
    Call xSubProc
End Sub

Таким образом, мы можем использовать этот подход в качестве простой альтернативы для Application.OnTime и планировать периодическое выполнение VBA-процедур при помощи интервала обновления, установленного в Свойствах подключения, как показано на Рис. 1.

Рис. 1. Свойства подключения
Рис. 1. Свойства подключения

Теги:
Хабы:
+2
Комментарии 0
Комментарии Комментировать

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн