Uporaba časovnika v makroih MS Office VBA

Za tiste od nas, ki imamo svoje misli globoko v sebi VB.NET, potovanje nazaj v VB6 je lahko zmedeno potovanje. Uporaba časovnika v VB6 je tako. Hkrati dodajanje časovnih procesov v kodo ni očitno za nove uporabnike mak VBA.

Časovniki za novorojenčke

Kodiranje makro Word VBA za samodejno določanje časa testa, ki je bil napisan v Wordu, je značilen razlog za uporabo časovnika. Drug pogost razlog je, da vidite, koliko časa porabijo različni deli kode, da lahko delate na optimizaciji počasnih odsekov. Včasih boste morda želeli preveriti, ali se v aplikaciji kaj dogaja, ko se zdi, da računalnik samo sede v prostem teku, kar je lahko varnostna težava. Časovniki lahko to storijo.

Zaženite timer

Časovnik začnete s kodiranjem izjave OnTime. Ta stavek je implementiran v Wordu in Excelu, vendar ima drugačno skladnjo, odvisno od tega, kateri uporabljate. Sintaksa za Word je:

izraz. OnTime (kdaj, ime, toleranca)

Sintaksa za Excel je videti tako:

izraz. OnTime (zgodnji čas, postopek, najnovejši čas, urnik)

instagram viewer

Oba imata skupni prvi in ​​drugi parameter. Drugi parameter je ime drugega makra, ki se zažene, ko je dosežen čas v prvem parametru. Pravzaprav je kodiranje te izjave podobno ustvarjanju podprograma dogodka v smislu VB6 ali VB.NET. Dogodek doseže čas v prvem parametru. Podprogram dogodka je drugi parameter.

To se razlikuje od načina kodiranja v VB6 ali VB.NET. En makro, imenovan v drugem parametru, je lahko v kateri koli kodi, ki je dostopna. V dokumentu Word Microsoft priporoča, da ga vstavite v predlogo dokumenta Normal. Če ga vstavite v drug modul, Microsoft priporoča uporabo celotne poti: Project. Modul. Makro

Izraz je ponavadi objekt Application. V dokumentaciji Word in Excel je navedeno, da lahko tretji parameter prekliče izvedbo makra dogodka, če pogovorno okno ali kakšen drug postopek prepreči, da bi se v določenem času zagnal. V Excelu lahko načrtujete nov čas v primeru, da se to zgodi.

Zakodirajte makro časovnega dogodka

Ta koda v Wordu je namenjena skrbniku, ki želi prikazati obvestilo, da je čas testiranja potekel in natisniti rezultat preskusa.

Javni pod testni čas ()
Odpravljanje napak. Natisni "Alarm se bo ugasnil v 10 sekundah!"
Odpravljanje napak. Natisni ("Pred OnTime:" in zdaj)
alertTime = Zdaj + TimeValue ("00:00:10")
Uporaba. Čas opozorilaTime, "EventMacro"
Odpravljanje napak. Natisni ("Po OnTime:" in zdaj)
Končni pod
Sub EventMacro ()
Odpravljanje napak. Natisni ("Izvajanje dogodka makro:" in zdaj)
Končni pod

Rezultat je naslednja vsebina v neposrednem oknu:

Alarm se bo ugasnil v 10 sekundah!
Pred OnTime: 25.12.2000 19:41:23
Po OnTime: 25.12.2000 19:41:23
Izvedba makra dogodkov: 27.2.2010 19:41:33

Možnost za druge Office aplikacije

Druge aplikacije Office ne uporabljajo OnTime. Za tiste imate več možnosti. Najprej lahko uporabite funkcijo Timer, ki preprosto vrne število sekund od polnoči v računalniku in opravi svojo matematiko ali pa uporabite klice Windows API. Prednost klicev Windows API ima prednost, ker je natančnejša od časovnika. Tu je rutina, ki jo je predlagal Microsoft, ki naredi trik:

Zasebno razglasi funkcijo getFrequency Lib "kernel32" _
Vzdevek "QueryPerformanceFrequency" (cyFrequency As Currency) Kot dolgo
Zasebna razglasitev funkcije getTickCount Lib "kernel32" _
Vzdevek "QueryPerformanceCounter" (cyTickCount As Currency) Kot dolgo
Sub TestTimeAPICalls ()
Dim dTime kot dvojno
dTime = MicroTimer
Dim StartTime kot samski
StartTime = Časovnik
Za i = 1 do 10000000
Dim j kot dvojni
j = Sqr (i)
Naslednji
Odpravljanje napak. Natisni ("MicroTimer je vzel čas:" & MicroTimer - dTime)
Končni pod
Funkcija MicroTimer () kot dvojna
'
'Vrne sekunde.
'
Zatemnite cyTicks1 kot valuto
Statična frekvenca kot valuta
'
MicroTimer = 0
'Pridobi frekvenco.
Če je cyFrequency = 0, potem getFrequency cyFrequency
"Dobite klope.
getTickCount cyTicks1
'Sekunde
Če je cyFrequency, potem MicroTimer = cyTicks1 / cyFrequency
Končna funkcija