Tiems iš mūsų, kurie gilinasi į savo mintis VB.NET, kelionė atgal į VB6 gali būti paini kelionė. Laikmačio naudojimas VB6 yra toks. Tuo pačiu metu naujiems VBA makrokomandų vartotojams nėra aišku, ar įtraukti procesus į savo kodą.
Laikmačiai naujagimiams
Kodavimas „Word VBA“ makrokomanda, kad būtų automatiškai sudedamas testas, kuris buvo parašytas „Word“, yra tipiška laikmačio naudojimo priežastis. Kita dažna priežastis yra pamatyti, kiek laiko užima skirtingos kodo dalys, kad galėtumėte dirbti optimizuodami lėtas dalis. Kartais galbūt norėsite sužinoti, ar programoje nieko nevyksta, kai atrodo, kad kompiuteris tiesiog sėdėjo nenaudojamas, o tai gali būti saugumo problema. Laikmačiai gali tai padaryti.
Paleiskite laikmatį
Laikmatį paleisite užkodavę „OnTime“ sakinį. Šis teiginys yra įdiegtas „Word“ ir „Excel“, tačiau jo sintaksė skiriasi, atsižvelgiant į tai, kurį naudojate. „Word“ sintaksė yra:
išraiška. „OnTime“ (kada, vardas, tolerancija)
„Excel“ sintaksė atrodo taip:
išraiška. OnTime (anksčiausias laikas, procedūra, paskutinis laikas, tvarkaraštis)
Abu turi pirmąjį ir antrąjį parametrus. Antrasis parametras yra kitos makrokomandos, kuri veikia, kai pasiekiamas laikas pirmame parametre, pavadinimas. Iš tikrųjų šio teiginio kodavimas yra tarsi įvykio paprogramės sukūrimas VB6 arba VB.NET terminais. Pirmuoju parametru įvykis pasiekia laiką. Įvykio paprogramė yra antrasis parametras.
Tai skiriasi nuo to, kaip jis užkoduotas VB6 ar VB.NET. Viena vertus, antrame parametre pavadinta makrokomanda gali būti bet kokiame prieinamame kode. „Word“ dokumente „Microsoft“ rekomenduoja įdėti jį į įprastą dokumento šabloną. Jei įdėsite jį į kitą modulį, „Microsoft“ rekomenduoja naudoti visą kelią: Projektas. Modulis. Makro.
Išraiška paprastai yra taikymo objektas. „Word“ ir „Excel“ dokumentuose teigiama, kad trečiasis parametras gali atšaukti įvykio makrokomandos vykdymą tuo atveju, jei dialogas ar kitas procesas neleidžia jo paleisti per tam tikrą laiką. „Excel“ programoje galite suplanuoti naują laiką, jei taip atsitiks.
Užkoduokite laiko įvykio makrokomandą
Šis „Word“ kodas skirtas administratoriui, norinčiam parodyti pranešimą, kad bandymo laikas pasibaigęs, ir atsispausdinti testo rezultatą.
Viešas antrinis „TestOnTime“ ()
Derinti. Spausdinti "Žadintuvas užges per 10 sekundžių!"
Derinti. Spausdinti („Before OnTime:“ ir dabar)
alertTime = Dabar + „TimeValue“ („00:00:10“)
Taikymas. „OnTime alertTime“, „EventMacro“
Derinti. Spausdinti („After OnTime:“ ir dabar)
Pabaigos poskyris
„Sub EventMacro“ ()
Derinti. Spausdinti („Įvykio makrokomanda vykdoma:“ ir dabar)
Pabaigos poskyris
Tiesioginiame lange gaunamas toks turinys:
Žadintuvas užges per 10 sekundžių!
Iki OnTime: 2000 12 25 7:41:23
Po „OnTime“: 2000 12 25 7:41:23
Įvykio makrokomandos vykdymas: 2010-02-27 7:41:33
Galimybė naudoti kitas „Office“ programas
Kitos „Office“ programos neįdiegia „OnTime“. Tiems, jūs turite keletą pasirinkimų. Pirmiausia galite naudoti laikmačio funkciją, kuri tiesiog grąžina sekundžių skaičių nuo vidurnakčio jūsų kompiuteryje ir atlieka savo matematiką arba galite naudoti „Windows API“ skambučius. Naudojant „Windows API“ skambučius, pranašumas yra tai, kad jie yra tikslesni nei laikmatis. Štai „Microsoft“ pasiūlyta rutina, kuri daro apgaulę:
Privataus deklaravimo funkcija „getFrequency Lib“ kernel32 “_
Pseudonimas „QueryPerformanceFrequency“ („cyFrequency As Currency“) tol, kol
Privataus deklaravimo funkcija getTickCount Lib "kernel32" _
Alias „QueryPerformanceCounter“ („cyTickCount As Currency“) tol, kol
„Sub TestTimeAPICalls“ ()
Dim dTime kaip dviguba
dTime = „MicroTimer“
„Dim StartTime“ kaip vienvietis
„StartTime“ = laikmatis
Jei i = 1 iki 10000000
Dim j kaip dviguba
j = Sqr (i)
Kitas
Derinti. Spausdinti („MicroTimer“ užtruko: „& MicroTimer - dTime“)
Pabaigos poskyris
Funkcija „MicroTimer“ () kaip dviguba
'
'Grąžina sekundes.
'
Dim cyTicks1 kaip valiuta
Statinis cyFrequency kaip valiuta
'
„MicroTimer“ = 0
„Gaukite dažnį.
Jei cyFrequency = 0, tada getFrequency cyFrequency
„Gaukite erkių.
„getTickCount cyTicks1“
'Sekundės
Jei cyFrequency, tada MicroTimer = cyTicks1 / cyFrequency
Pabaigos funkcija