Перейти к содержимому

VBA Excel. Функция Timer (примеры)

Применение функции Timer в VBA Excel для приостановки выполнения приложений и тестирования кодов на время исполнения. Примеры использования.

  1. Описание функции Timer
  2. Примеры использования в VBA Excel

Описание функции Timer

Timer – это функция без аргументов, которая возвращает количество секунд, прошедших после полночи. Значение типа Single.

На сайте разработчика сказано, что в Windows функция Timer возвращает дробные части секунды. О порядке дробной части там информации нет. Попробуем выяснить это сами, запустив в редакторе VBA Excel подпрограмму со строкой
MsgBox "Timer = " & Timer:
Информационное окно с текущем значением функции Timer
Исходя из результата, отображенного в информационном окне MsgBox, будем считать, что функция Timer возвращает сотые доли секунды. Во время экспериментов с процедурой Vremya из Примера 2 результат вычисления разницы между двумя значениями функции Timer достигал шести знаков после запятой, и один раз – семи.

Примеры использования в VBA Excel

Пример 1
Присвоение значения функции Timer переменной:

Dim x As Single
x = Timer

Пример 2
Код VBA Excel для приостановки приложений:

Dim Start As Single, Pause As Single
Start = Timer
Pause = 0.5
Do While Timer < Start + Pause
   DoEvents
Loop
  • Start – переменная, в которую записывается первоначальное значение таймера.
  • Pause – время в секундах (до сотых значений), на которое следует приостановить программу.

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

  • приостановленная процедура может быть запущена повторно из другой части вашего кода;
  • другие приложения могут обратиться к приостановленной процедуре.

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

Sub StopSub(Pause As Single)
Dim Start As Single
Start = Timer
Do While Timer < Start + Pause
   DoEvents
Loop
End Sub

Проверяем работоспособность подпрограммы StopSub:

Sub Vremya()
Dim x As Single
x = Timer
Call StopSub (3)
MsgBox Timer - x
End Sub

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

Такой способ приостановки приложений можно использовать в VBA Excel при создании бегущей строки.

Пример 3
Функцию Timer можно использовать для замера времени выполнения процедуры. Мы ее уже использовали для определения времени выполнения подпрограммы StopSub:

Sub Vremya()
Dim x As Single
x = Timer
Call MySub
MsgBox Timer - x
End Sub

Замените MySub на имя вашей процедуры и запустите код в редакторе VBA Excel. Информационное окно MsgBox покажет время выполнения подпрограммы.

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

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].