Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Метод Application.OnTime

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

    Синтаксис метода Application.OnTime

    Параметры метода Application.OnTime

    Основные параметры:

    1. EarliestTime – время, когда необходимо выполнить указанную процедуру.
    2. Procedure – имя выполняемой процедуры.

    Процедура Procedure не должна иметь аргументов и не может быть объявлена в модуле формы.

    В качестве аргументов параметра EarliestTime используются следующие функции:

    • TimeValue(«hh:mm:ss») – чтобы запланировать выполнение указанной процедуры в определенное время суток.
    • Now + TimeValue(«hh:mm:ss») – чтобы запланировать выполнение указанной процедуры по истечении заданного времени с момента запуска процедуры с методом Application.OnTime.

    Дополнительные параметры:

    1. LatestTime – интервал времени, в течение которого можно запустить указанную процедуру, если Microsoft Excel в назначенное время выполняет другую процедуру. По умолчанию указанная процедура будет запущена в любом случае после завершения предыдущей процедуры. Подробнее об этом читайте на сайте разработчика.
    2. Schedule – если задано значение True, будет запланировано выполнение указанной процедуры, False – очистка ранее установленной процедуры. Значение по умолчанию – True.

    Параметр LatestTime я не тестировал, а вот любое применение параметра Schedule в значении False у меня в Excel 2016 вызывает ошибку. Поэтому в примерах я эти параметры не использую.

    Примеры выполнения процедур по времени

    Пример 1
    Однократный запуск внешней процедуры через заданный промежуток времени:

    Процедура Procedure1 будет выполнена через 10 секунд после запуска процедуры Primer1.

    Пример 2
    Однократный запуск внешней процедуры в заданное время:

    Процедура Procedure2 будет выполнена в 12 часов по системному времени компьютера, если ранее была запущена процедура Primer2.

    Пример 3
    Многократный запуск внешней процедуры:

    Процедура Primer3 запускает «условно бесконечный» секундомер в ячейке A1 активного рабочего листа, ограниченный 100 секундами с помощью условия.

    Пример 4
    Сохранение рабочей книги Excel каждые 10 минут:

    Процедуры Primer4() и Procedure4() будут работать в бесконечном цикле, сохраняя рабочую книгу Excel каждые 10 минут, до закрытия этой книги. Закрывать книгу следует не менее, чем через 10 минут после внесения последних изменений, для гарантированного их сохранения.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    Фразы для контекстного поиска: пауза, задержка, приостановка, задержка выполнения кода.

    2 комментария для “VBA Excel. Метод Application.OnTime”

    1. александра

      Если пример первый запустить без изменений, то произойдет ошибка, т.к. эту процедуру просто не найдут, но если убрать в названии процедуры «my», то все отлично работает!)

      Sub Primer1()
      Application.OnTime Now + TimeValue("00:00:10"), "Procedure1"
      End Sub

      Sub Procedure1()
      MsgBox "Процедура запущена!"
      End Sub

      1. Евгений

        Спасибо, Александра! Ошибку исправил.

    Обсуждение закрыто.