Коришћење тајмера у МС Оффице ВБА макроима

click fraud protection

За оне од нас који имамо свој ум дубоко у себи ВБ.НЕТ, путовање натраг ВБ6 може бити збуњујуће путовање. Употреба тајмера у ВБ6 је таква. У исто време, додавање временских процеса у ваш код није очигледно за нове кориснике ВБА макронаредби.

Тајмери ​​за новорођенче

Кодирање Ворд ВБА макронаредба за аутоматско постављање теста која је написана у Ворд-у типичан је разлог за коришћење тајмера. Други чест разлог је да видите колико времена вам заузимају различити делови кода како бисте могли да радите на оптимизацији спорих секција. Понекад бисте могли да видите да ли се ишта дешава у апликацији када рачунар само сједи у празном ходу, што може представљати безбедносни проблем. Тајмери ​​то могу.

Покрените тајмер

Покрећете тајмер кодирањем ОнТиме изјаве. Ова изјава је имплементирана у Ворд и Екцел, али има различиту синтаксу овисно о томе коју користите. Синтакса за Ворд је:

израз. ОнТиме (када, име, толеранција)

Синтакса за Екцел изгледа овако:

израз. ОнТиме (ЕарлистТиме, Процедуре, ЛатестТиме, Сцхедуле)

instagram viewer

Оба имају први и други параметар заједничке. Други параметар је име друге макронаредбе која се покреће када дође време у првом параметру. Заправо, кодирање ове изјаве је попут креирања потпрограма догађаја у терминима ВБ6 или ВБ.НЕТ. Догађај достиже време у првом параметру. Потпрограм догађаја је други параметар.

Ово се разликује од начина на који је кодиран у ВБ6 или ВБ.НЕТ. Као прво, макро именовани у другом параметру може бити у било којем коду који је доступан. У документу са Ворд-ом, Мицрософт препоручује да га ставите у образац документа Нормал. Ако га ставите у други модул, Мицрософт препоручује употребу пуне путање: Пројецт. Модул. Макро.

Израз је обично објект апликације. Документација Ворд и Екцел каже да трећи параметар може отказати извршење макроа догађаја у случају да дијалог или неки други поступак спречи да се покрене у одређеном времену. У Екцелу можете заказати ново време у случају да се то догоди.

Кодирајте макро временског догађаја

Овај код у Ворду намењен је администратору који жели да прикаже обавештење да је време тестирања истекло и одштампао резултат теста.

Јавни Суб ТестОнТиме ()
Дебуг. Штампа "Аларм ће се искључити за 10 секунди!"
Дебуг. Штампање ("Пре ОнТиме:" и сада)
алертТиме = Сада + ТимеВалуе ("00:00:10")
Апликација. ОнТиме алармаТиме, "ЕвентМацро"
Дебуг. Штампање ("После ОнТиме:" и сада)
Енд Суб
Суб ЕвентМацро ()
Дебуг. Штампање ("Извршавање догађаја макронаредбе:" и сада)
Енд Суб

То резултира следећим садржајем у непосредном прозору:

Аларм ће се искључити за 10 секунди!
Пре ОнТиме: 25.12.2000 19:41:23
Након ОнТиме: 25.12.2000 19:41:23
Извршење макронаредбе догађаја: 27.2.2010. 19:41:33

Опција за остале Оффице апликације

Остале Оффице апликације не имплементирају ОнТиме. За њих имате неколико избора. Прво можете да користите функцију „Тајмер“ која једноставно враћа број секунди од поноћи на вашем рачунару и обавља сопствену математику или можете да користите Виндовс АПИ позиве. Кориштење Виндовс АПИ позива има предност што је прецизнија од Тимера. Ево рутине коју је предложио Мицрософт која чини трик:

Приватна декларација функције гетФрекуенци Либ "кернел32" _
Алиас „КуериПерформанцеФрекуенци“ (циФрекуенци Ас Цурренци) Колико дуго
Приватна декларација функције гетТицкЦоунт Либ "кернел32" _
Алиас „КуериПерформанцеЦоунтер“ (циТицкЦоунт Ас Цурренци) Колико дуго
Суб ТестТимеАПИЦаллс ()
Дим дТиме као двоструко
дТиме = МицроТимер
Дим СтартТиме као сингл
СтартТиме = Тајмер
За и = 1 до 10000000
Дим ј као двострук
ј = Скр (и)
Следећи
Дебуг. Штампање ("МицроТимер време је узето:" & МицроТимер - дТиме)
Енд Суб
Функција МицроТимер () као двострука
'
'Враћа се у секунди.
'
Дим циТицкс1 као валута
Статичка фреквенција као валута
'
МицроТимер = 0
'Узми фреквенцију.
Ако је циФрекуенци = 0, онда гетФрекуенци циФрекуенци
'Набави крпеља.
гетТицкЦоунт циТицкс1
'Секунде
Ако је циФрекуенци, онда је МицроТимер = циТицкс1 / циФрекуенци
Завршна функција

instagram story viewer