Neile meist, kellel on sügav mõte VB.NET, teekond tagasi VB6 võib olla segane reis. Taimeri kasutamine VB6-s on selline. Samal ajal ei ole VBA-makrode uutele kasutajatele ilmne, et koodile ajastatud protsesside lisamine.
Taimerid algajatele
Kodeerimine Wordi VBA-makro, mis ajastab Wordis kirjutatud testi automaatse ajastamise, on taimeri kasutamise tüüpiline põhjus. Veel üks levinum põhjus on näha, kui palju aega teie koodi erinevad osad kulutavad, et saaksite töötada aeglaste lõikude optimeerimisega. Mõnikord võiksite teada saada, kas rakenduses juhtub midagi, kui arvuti näib lihtsalt seisvat jõude, mis võib olla turvalisuse probleem. Taimerid saavad seda teha.
Käivitage taimer
Taimeri käivitamiseks kodeerige OnTime-väljavõte. Seda avaldust rakendatakse Wordis ja Excelis, kuid sellel on erinev süntaks, sõltuvalt sellest, millist kasutate. Wordi süntaks on:
väljendus. OnTime (millal, nimi, tolerants)
Exceli süntaks näeb välja selline:
väljendus. OnTime (varaseim aeg, protseduur, uusim aeg, ajakava)
Mõlemal on esimene ja teine parameeter ühised. Teine parameeter on teise makro nimi, mis käivitub, kui esimese parameetri aeg on kätte jõudnud. Tegelikult on selle avalduse kodeerimine nagu sündmuse alamprogrammi loomine VB6 või VB.NET terminites. Sündmus jõuab esimese parameetriga kellaajani. Sündmuse alamprogramm on teine parameeter.
See erineb VB6 või VB.NET kodeerimise viisist. Esiteks võib teises parameetris nimetatud makro olla suvalises juurdepääsetavas koodis. Wordi dokumendis soovitab Microsoft panna selle tavalisse dokumendimalli. Kui paned selle mõnda teise moodulisse, soovitab Microsoft kasutada kogu tee: Projekt. Moodul. Makro.
Väljend on tavaliselt rakendusobjekt. Wordi ja Exceli dokumentatsioonis öeldakse, et kolmas parameeter võib sündmuse makro täitmise tühistada juhul, kui dialoog või mõni muu protsess takistab selle käivitamist teatud aja jooksul. Excelis saate uue aja ajastada, kui see juhtub.
Kodeerige ajaürituse makro
See Wordi kood on mõeldud administraatorile, kes soovib kuvada teatise, et testimise aeg on lõppenud, ja testi tulemuse printida.
Avalik alam TestOnTime ()
Silumine. Prindi "Äratus kustub 10 sekundi pärast!"
Silumine. Prindi („Enne OnTime'i” ja nüüd)
alertTime = Nüüd + TimeValue ("00:00:10")
Rakendus. OnTime alertTime, "EventMacro"
Silumine. Prindi („Pärast OnTime'i” ja nüüd)
Lõpu alam
AlamüritusMacro ()
Silumine. Prindi ("Sündmuse makro käivitamine:" ja nüüd)
Lõpu alam
Selle tulemuseks on vahetu akna järgmine sisu:
Äratus kustub 10 sekundi pärast!
Enne OnTime: 25.12.22 7:41:23 PM
Pärast OnTime: 25.12.22 7:41:23 PM
Sündmuse makro täitmine: 27.02.2010 7:41:33 PM
Võimalus muudele Office'i rakendustele
Muud Office'i rakendused ei rakenda OnTime'i. Nende jaoks on teil mitu valikut. Esiteks võite kasutada funktsiooni Taimer, mis lihtsalt tagastab sekundis arv pärast keskööd teie arvutis ja teeb ise oma matemaatika või võite kasutada Windows API kõnesid. Windows API kõnede kasutamise eeliseks on täpsus kui taimeril. Trikk teeb Microsofti soovitatud rutiini:
Privaatdeklaratsiooni funktsioon getFrequency Lib "kernel32" _
Alias "QueryPerformanceFrequency" (cyFrequency kui valuuta) nii pikk
Privaatse deklareerimise funktsioon getTickCount Lib "kernel32" _
Alias "QueryPerformanceCounter" (cyTickCount kui valuuta) nii kaua
Alam TestTimeAPICalls ()
Dim dTime as Double
dTime = MicroTimer
Hämar StartTime kui vallaline
StartTime = Taimer
I = 1 kuni 10000000
Dim j kui topelt
j = Sqr (i)
Järgmine
Silumine. Prindi ("MicroTimer võttis aega:" & MicroTimer - dTime)
Lõpu alam
Funktsioon MicroTimer () topelt kujul
'
'Tagastab sekundid.
'
Dim cyTicks1 kui valuuta
Staatiline cyFrequency kui valuuta
'
MicroTimer = 0
'Saage sagedus.
Kui cyFrequency = 0, siis getFrequency cyFrequency
Hangi puugid.
getTickCount cyTicks1
'Sekundid
Kui cyFrequency siis MicroTimer = cyTicks1 / cyFrequency
Lõppfunktsioon