Применение функции Timer в VBA Excel для приостановки выполнения приложений и тестирования кодов на время исполнения. Примеры использования.
Описание функции Timer
На сайте разработчика сказано, что в Windows функция Timer возвращает дробные части секунды. О порядке дробной части там информации нет. Попробуем выяснить это сами, запустив в редакторе VBA Excel подпрограмму со строкой
1 |
MsgBox "Timer = " & Timer |
Исходя из результата, отображенного в информационном окне MsgBox, будем считать, что функция Timer возвращает сотые доли секунды. Во время экспериментов с процедурой Vremya из Примера 2 результат вычисления разницы между двумя значениями функции Timer достигал шести знаков после запятой, и один раз – семи.
Примеры использования в VBA Excel
Пример 1
Присвоение значения функции Timer переменной:
1 2 |
Dim x As Single x = Timer |
Пример 2
Код VBA Excel для приостановки приложений:
1 2 3 4 5 6 |
Dim Start As Single, Pause As Single Start = Timer Pause = 0.5 Do While Timer < Start + Pause DoEvents Loop |
- Start – переменная, в которую записывается первоначальное значение таймера.
- Pause – время в секундах (до сотых значений), на которое следует приостановить программу.
Функция DoEvents во время выполнения цикла передает управление операционной системе для обработки других событий. По рекомендации разработчиков не следует использовать DoEvents в тех случаях, когда
- приостановленная процедура может быть запущена повторно из другой части вашего кода;
- другие приложения могут обратиться к приостановленной процедуре.
Код для приостановки приложений можно использовать как отдельную подпрограмму, вставляя ее имя с указанием интервала в нужные места других процедур:
1 2 3 4 5 6 7 |
Sub StopSub(Pause As Single) Dim Start As Single Start = Timer Do While Timer < Start + Pause DoEvents Loop End Sub |
Проверяем работоспособность подпрограммы StopSub:
1 2 3 4 5 6 |
Sub Vremya() Dim x As Single x = Timer Call StopSub (3) MsgBox Timer - x End Sub |
Точный или почти точный результат будет только при использовании в качестве аргумента целых секунд, в том числе и в примере кода, предложенного разработчиком.
Такой способ приостановки приложений можно использовать в VBA Excel при создании бегущей строки.
Пример 3
Функцию Timer можно использовать для замера времени выполнения процедуры. Мы ее уже использовали для определения времени выполнения подпрограммы StopSub:
1 2 3 4 5 6 |
Sub Vremya() Dim x As Single x = Timer Call MySub MsgBox Timer - x End Sub |
Замените MySub на имя вашей процедуры и запустите код в редакторе VBA Excel. Информационное окно MsgBox покажет время выполнения подпрограммы.