Időzítő használata az MS Office VBA makrókban

Azok számára, akik mélyen gondolkodunk VB.NET, visszautazás a VB6 zavaró út lehet. Időzítő használata a VB6-ban ilyen. Ugyanakkor az időzített folyamatok hozzáadása a kódhoz nem egyértelmű a VBA makrók új felhasználói számára.

Időzítők kezdőknek

Coding egy Word VBA makró, amely automatikusan időzíti a Wordbe írt tesztet, egy tipikus ok az időzítő használatára. Egy másik általános ok az, hogy megnézheti, hogy mennyi időt vesz igénybe a kód különböző részei, így dolgozhat a lassú szakaszok optimalizálásán. Időnként érdemes megnézni, hogy történik-e valami az alkalmazásban, amikor a számítógép úgy tűnik, hogy csak üresjáratban ül, ami biztonsági problémát jelenthet. Az időzítők meg tudják csinálni.

Indítson el egy időzítőt

Az időzítőt az OnTime utasítás kódolásával indíthatja el. Ez a megállapítás Word-ben és Excel-ben van megvalósítva, de eltérő szintaxissal rendelkezik, attól függően, hogy melyiket használja. A Word szintaxisa:

kifejezés. OnTime (mikor, név, tolerancia)

Az Excel szintaxisa így néz ki:

instagram viewer

kifejezés. OnTime (legkorábbi idő, eljárás, legújabb idő, ütemezés)

Mindkettő közös az első és a második paraméterrel. A második paraméter egy másik makró neve, amely akkor fut, amikor eléri az első paraméterben szereplő időt. Valójában ennek a kijelentésnek a kódolása olyan, mint egy esemény szubrutin létrehozása VB6 vagy VB.NET szempontból. Az esemény eléri az időt az első paraméterben. Az esemény szubrutin a második paraméter.

Ez különbözik a VB6 vagy a VB.NET kódolásának módjától. Először is, a második paraméterben megnevezett makró bármilyen elérhető kódban lehet. Egy Word-dokumentumban a Microsoft azt ajánlja, hogy tegye a Normál dokumentumsablonba. Ha egy másik modulba helyezi, a Microsoft a teljes útvonal használatát javasolja: Projekt. Modult. Macro.

A kifejezés általában az Application objektum. A Word és az Excel dokumentációja kimondja, hogy a harmadik paraméter visszavonhatja az eseménymakró végrehajtását abban az esetben, ha egy párbeszédpanel vagy más folyamat megakadályozza annak futtatását egy meghatározott időn belül. Az Excel programban új időt ütemezhet, ha ez történik.

Kódolja az idő esemény makróját

Ez a kód a Wordben annak a rendszergazdanak a célja, hogy értesítést jelenítsen meg arról, hogy a teszt ideje lejárt, és kinyomtatja a teszt eredményét.

Nyilvános Sub TestOnTime ()
Debug. Nyomtatás: "A riasztó 10 másodperc múlva kialszik!"
Debug. Nyomtatás ("OnTime előtt:" és most)
alertTime = Most + TimeValue ("00:00:10")
Alkalmazás. OnTime alertTime, "EventMacro"
Debug. Nyomtatás ("OnTime után:" és most)
Befejezés Sub
Sub EventMacro ()
Debug. Nyomtatás ("Esemény makró végrehajtása:" és most)
Befejezés Sub

Ennek eredményeként a következő ablak jelenik meg a közvetlen ablakban:

A riasztás 10 másodperc múlva kialszik!
OnTime előtt: 2000.12.25. 7:41:23 PM
OnTime után: 2000.12.25. 7:41:23 PM
Esemény makró végrehajtása: 2010.02.27. 7:41:33 PM

Opció más Office alkalmazásokhoz

Más Office alkalmazások nem valósítják meg az OnTime alkalmazást. Azok számára számos választási lehetősége van. Először használhatja az Időzítő funkciót, amely egyszerűen visszaadja a PC-n éjfél óta eltelt másodpercek számát, és elvégzi a saját matematikáját, vagy használhatja a Windows API hívásokat. A Windows API hívások használatának előnye, hogy pontosabb, mint az időzítő. A Microsoft által javasolt rutin a következő trükk:

Privát nyilatkozat függvény getFrequency Lib "kernel32" _
Alias ​​"QueryPerformanceFrequency" (cyFrequency mint pénznem) mindaddig, amíg
Privát nyilatkozat funkció getTickCount Lib "kernel32" _
Alias ​​"QueryPerformanceCounter" (cyTickCount mint pénznem) mindaddig
Sub TestTimeAPICalls ()
Dim dTime As Double
dTime = MicroTimer
Dim StartTime mint Single
StartTime = Időzítő
I = 1-ig 10000000-ig
Dim j As Double
j = Sqr (i)
Következő
Debug. Nyomtatás ("A MicroTimer idő eltelte:" & MicroTimer - dTime)
Befejezés Sub
Funkció MicroTimer () duplaként
'
'Másodperceket ad vissza.
'
Dim cyTicks1 pénznemként
Statikus cyFrequency mint pénznem
'
MicroTimer = 0
- Frekvencia.
Ha cyFrequency = 0, akkor getFrequency cyFrequency
- Hozzon kullancsot.
getTickCount cyTicks1
- Másodperc
Ha cyFrequency, akkor MicroTimer = cyTicks1 / cyFrequency
Vége funkció

instagram story viewer