truc №82
De multe ori, cu siguranță că ar fi convenabil pentru a rula un macro într-un interval de timp prestabilit sau la intervale de timp specificate. Din fericire, Excel VBA oferă o metodă care face posibilă.
Când Application.OnTime metoda poate fi utilizată pentru a rula în mod automat un macro, dar trebuie să efectueze mai întâi o setare mică. Să presupunem că aveți un macro care doriți să ruleze în fiecare zi, la ora 15:00 (15:00). În primul rând aveți nevoie pentru a determina cum să executați metoda OnTime. Acest lucru se poate realiza folosind evenimente Workbook_0pen în modulul privat pentru obiectul Workbook.
În Windows, cel mai rapid mod de a ajunge în obiectul modulului privat Workbook (ThisWorkbook, această carte) - Faceți clic dreapta pe pictograma Excel de lângă meniul File (Fișier) și selectați Source Code (Vizualizare cod) din meniul contextual. (Pe Macintosh, deschideți VBE și apoi deschideți un obiect modul Workbook în fereastra Project.) Introduceti codul din listingul 7.2.
// Listarea 7.2 Private Sub Workbook Deschidere () Application.OnTime T1meValue ( "15:00:00"). "MyMacro" End Sub
În schimb MyMacro trebuie să înlocuiască numele macro pe care doriți să o efectuați. Ar trebui să fie plasat într-un modul standard și să conțină metoda OnTime, așa cum se arată în Listing 7.3.
// Listarea 7.3 Sub MyMacro () Application.OnTime T1meValue ( "15:00:00"), "MyMacro", „CODUL End Sub
Procedura MyMacro va rula în fiecare zi la ora 15:00, în timp ce Excel este deschis.
Acum, să presupunem că doriți să efectuați MyMacro la fiecare 15 minute după deschiderea cărții. Din nou, se va derula procedura în timpul deschiderii cărții, astfel încât faceți clic dreapta pe pictograma Excel de lângă meniul de fișier (fișiere), selectați Source Code (View Code) și introduceți codul din listingul 7.4.
// Listarea 7.4 Private Sub Workbook_BeforeClose (Anulare Ca Boolean) Application.OnTime dTime. "MyMacro". False End Sub Private Sub Workbook_Open () Application.OnTime acum + TIMEVALUE ( "00:15:00"), "MyMacro" End Sub
În orice modul standard (care îl puteți deschide comanda Insert → Module), introduceți codul afișat în Listing 7.5.
// Listarea 7.5 Public dTime Ca Data Sub MuMasro () = dTime acum + TIMEVALUE ( "00:15:00") Application.OnTime dTime, "MyMacro", „CODUL End Sub
Notă chto.vy trece valoarea de timp de 15 minute, cu un total dTime variabilă (publică). Este necesar pentru tine de a anula metoda OnTime în caz Workbook_BeforeC1ose prin atribuirea unor argumente suplimentare Programează fals (false). Valoarea implicită este TRUE (adevărat), astfel încât prin schimbarea valorii False (False), comandați de a anula metoda Excel OnTime configurat să se execute la un moment dat.
Dacă nu trece timpul într-o variabilă, Excel nu va ști ce metodă OnTime trebuie să anuleze, deoarece valoarea de acum + TIMEVALUE ( «00:15:00») nu este static, ci devine statică atunci când a trecut la variabila. Dacă atribuiți un program suplimentar argument fals (fals), registrul de lucru se va deschide automat la fiecare 15 minute după ce închide, și de a face MyMacro macro.