Za one od nas koji imamo svoje misli duboko u sebi VB.NET, putovanje natrag u VB6 može biti zbunjujuće putovanje. Korištenje tajmera u VB6 je takvo. U isto vrijeme, dodavanje tempiranih procesa vašem kôdu nije očito za nove korisnike VBA makronaredbi.
Tajmeri za novorođenče
šifriranje Word VBA makronaredba za automatsko određivanje vremena testa koji je napisan u Wordu tipičan je razlog korištenja timera. Drugi je čest razlog vidjeti koliko vremena uzimaju različiti dijelovi vašeg koda kako biste mogli raditi na optimizaciji sporih odjeljaka. Ponekad biste mogli vidjeti da li se išta događa u aplikaciji, kad se čini da računalo samo sjedi u praznom hodu, što može biti sigurnosni problem. Tajmeri to mogu.
Pokrenite tajmer
Mjerač vremena pokrećete kodiranjem izjave OnTime. Ova je izjava implementirana u Word i Excel, ali ima različitu sintaksu ovisno o tome koji koristite. Sintaksa za Word je:
izraz. OnTime (kada, naziv, tolerancija)
Sintaksa za Excel izgleda ovako:
izraz. OnTime (najranije vrijeme, postupak, najnovije vrijeme, raspored)
Oba imaju prvi i drugi zajednički parametar. Drugi parametar je naziv druge makronaredbe koja se pokreće kad dosegne vrijeme u prvom parametru. Zapravo, kodiranje ove izjave je poput stvaranja potprograma događaja u terminima VB6 ili VB.NET. Događaj doseže vrijeme u prvom parametru. Potprogram događaja je drugi parametar.
Ovo se razlikuje od načina na koji je kodiran u VB6 ili VB.NET. U jednom slučaju, makronaredba imenovana u drugom parametru može biti u bilo kojem pristupu kodu. U dokumentu programa Word Microsoft preporučuje da ga stavite u predložak dokumenta Normal. Ako ga stavite u drugi modul, Microsoft preporučuje korištenje pune staze: Project. Modul. Makro.
Izraz je obično objekt aplikacije. Dokumentacija Word i Excel kaže da treći parametar može otkazati izvršenje makronaredbe događaja u slučaju da se dijalog ili neki drugi postupak sprječava da se pokrene u određenom vremenu. U Excelu možete zakazati novo vrijeme u slučaju da se to dogodi.
Kodirajte makro vremenskog događaja
Ovaj kôd u Wordu namijenjen je administratoru koji želi prikazati obavijest da je vrijeme testiranja isteklo i ispisati rezultat testa.
Javni pod test test vremena ()
Debug. Ispis "Alarm će se ugasiti za 10 sekundi!"
Debug. Ispis ("Prije usluge OnTime:" i sada)
alarTime = Sada + TimeValue ("00:00:10")
Primjena. OnTime alarmaTime, "EventMacro"
Debug. Ispis ("Nakon OnTime:" i sada)
Kraj Sub
Sub EventMacro ()
Debug. Ispis ("Izvršavanje makronaredbe događaja:" i sada)
Kraj Sub
To rezultira sljedećim sadržajem u neposrednom prozoru:
Alarm će se ugasiti za 10 sekundi!
Prije OnTime: 25.12.2000 19:41:23
Nakon OnTime: 25.12.2000 19:41:23
Izvršavanje makronaredbe događaja: 27.2.2010. 19:41:33
Opcija za ostale Office aplikacije
Ostale Office aplikacije ne implementiraju OnTime. Za one imate nekoliko izbora. Prvo možete koristiti funkciju Timer koja jednostavno vraća broj sekundi od ponoći na računalu i obavlja vašu matematiku ili možete koristiti Windows API pozive. Korištenje Windows API poziva ima prednost što je preciznija od Timera. Evo rutine koju je predložio Microsoft koja čini trik:
Privatna Izjava funkcije getFrequency Lib "kernel32" _
Alias "QueryPerformanceFrequency" (cyFrequency As Currency) Kao dugo
Privatna Izjava funkcije getTickCount Lib "kernel32" _
Alias "QueryPerformanceCounter" (cyTickCount As Currency) Kao dugo
Sub TestTimeAPICalls ()
Dim dTime kao dvostruko
dTime = MicroTimer
Dim StartTime kao sam
StartTime = Mjerač vremena
Za i = 1 do 10000000
Dim j kao dvostruk
j = Sqr (i)
Sljedeći
Debug. Ispis ("Vrijeme uzimanja MicroTimera bilo je:" & MicroTimer - dTime)
Kraj Sub
Funkcija MicroTimer () kao dvostruka
'
'Vraća se u sekundi.
'
Dim cyTicks1 kao valuta
Statička frekvencija kao valuta
'
MicroTimer = 0
'Dohvati frekvenciju.
Ako je cyFrequency = 0, tada getFrequency cyFrequency
'Dohvati krpelja.
getTickCount cyTicks1
'Sekunde
Ako je cyFrequency, onda je MicroTimer = cyTicks1 / cyFrequency
Završna funkcija