Sommario:
- L'evento OnTime
- Mentre lavori, Excel controlla costantemente ciò che scrivi. Per questo motivo, è possibile impostare le cose in modo che una combinazione di tasti o una combinazione di tasti esegua una procedura.
Video: Visual Basic .NET Tutorial 21 - How to use Timer Control in VB.NET 2025
Esistono due tipi di eventi che è possibile utilizzare nella programmazione VBA per Excel 2016 che non sono associati agli oggetti: tempo e pressioni dei tasti. Poiché il tempo e i tasti non sono associati a un oggetto particolare come una cartella di lavoro o un foglio di lavoro, si programmano questi eventi in un normale modulo VBA.
L'evento OnTime
L'evento OnTime si verifica quando si verifica una determinata ora del giorno. Nell'esempio seguente viene illustrato come ottenere in Excel l'esecuzione di una procedura quando 3 p. m. evento si verifica. In questo caso, una voce del robot ti dice di svegliarti, accompagnato da una finestra di messaggio:
Applicazione Sub SetAlarm (). OnTime 0. 625, Applicazione "DisplayAlarm" End Sub Sub DisplayAlarm (). Discorso. Parla ("Ehi, svegliati") MsgBox "È ora di fare una pausa pomeridiana! "End Sub
In questo esempio, viene utilizzato il metodo OnTime dell'oggetto Application. Questo metodo accetta due argomenti: il tempo (0. 625 o 3: 00 p. M.) E il nome della procedura Sub da eseguire quando si verifica l'evento temporale (DisplayAlarm).
Questa procedura è molto utile se si tende a lasciarsi coinvolgere nel proprio lavoro da dimenticare le riunioni e gli appuntamenti. Basta impostare un evento OnTime per ricordare a te stesso.
La maggior parte delle persone ha difficoltà a pensare al tempo in termini di sistema di numerazione Excel. Pertanto, è possibile utilizzare la funzione VBA TimeValue per rappresentare l'ora. TimeValue converte una stringa che assomiglia a un tempo in un valore che può essere gestito da Excel. La seguente dichiarazione mostra un modo più semplice per programmare un evento per 3 p. m.:
Applicazione. OnTime TimeValue ("3: 00: 00 pm"), "DisplayAlarm"
Se si desidera pianificare un evento relativo all'ora corrente (ad esempio, 20 minuti da ora), è possibile utilizzare una dichiarazione come questa: < applicazioni. OnTime Now + TimeValue ("00: 20: 00"), "DisplayAlarm"
È inoltre possibile utilizzare il metodo OnTime per eseguire una procedura VBA in un particolare giorno. È necessario assicurarsi che il computer continui a funzionare e che la cartella di lavoro con la procedura sia mantenuta aperta. La seguente dichiarazione esegue la procedura DisplayAlarm a 5 p. m. il 31 dicembre 2016:
Applicazione. OnTime DateValue ("31/12/2016 5: 00 pm"), "DisplayAlarm"
Questa particolare linea di codice potrebbe rivelarsi utile per avvertirti che devi andare a casa e prepararti per le festività di Capodanno.
Ecco un altro esempio che utilizza l'evento OnTime. L'esecuzione delle procedure UpdateClock scrive l'ora nella cella A1 e inoltre programma un altro evento cinque secondi dopo.Questo evento riesegue la procedura UpdateClock. L'effetto netto è che la cella A1 viene aggiornata con l'ora corrente ogni cinque secondi. Per interrompere gli eventi, eseguire la procedura StopClock (che annulla l'evento). Notare che NextTick è una variabile a livello di modulo che memorizza l'ora per l'evento successivo.
Dim NextTick As Date Sub UpdateClock () 'Aggiorna la cella A1 con l'ora corrente ThisWorkbook. Fogli (1). Range ("A1") = Time "Imposta l'evento successivo a cinque secondi da ora NextTick = Now + TimeValue (" 00: 00: 05 ") Application. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () "Annulla l'evento OnTime (arresta l'orologio) On Error Riprendi l'applicazione successiva. OnTime NextTick, "UpdateClock", False End Sub
L'evento OnTime persiste anche dopo la chiusura della cartella di lavoro. In altre parole, se chiudi la cartella di lavoro senza eseguire la procedura StopClock, la cartella di lavoro si riaprirà automaticamente in cinque secondi (presupponendo che Excel sia ancora in esecuzione). Per impedire ciò, utilizzare una routine di evento Workbook_BeforeClose che contiene la seguente istruzione:
Call StopClock
Il metodo OnTime ha due argomenti aggiuntivi. Se si prevede di utilizzare questo metodo, è necessario fare riferimento al sistema di guida per i dettagli completi.
Se desideri vedere un'applicazione piuttosto complicata, controlla questa applicazione orologio analogico. Il quadrante dell'orologio è in realtà un grafico e il grafico viene aggiornato ogni secondo per visualizzare l'ora del giorno. Inutile, ma divertente.
Un'applicazione orologio analogico.
Mentre lavori, Excel controlla costantemente ciò che scrivi. Per questo motivo, è possibile impostare le cose in modo che una combinazione di tasti o una combinazione di tasti esegua una procedura.
Ecco un esempio che riassegna le chiavi PgDn e PgUp:
Applicazione Sub Setup_OnKey (). OnKey "{PgDn}", "PgDn_Sub" Applicazione. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () in caso di errore Riprendi ActiveCell successivo. Offset (1, 0). Attiva End Sub Sub PgUp_Sub () in caso di errore Riprendi ActiveCell successivo. Offset (-1, 0). Attiva End Sub
Dopo aver configurato gli eventi OnKey eseguendo la procedura Setup_OnKey, premendo PgDn si sposta di una riga verso il basso. Premendo PgUp ti muovi di una riga.
Si noti che i codici chiave sono racchiusi tra parentesi graffe, non tra parentesi. Per un elenco completo dei codici della tastiera, consultare il sistema della Guida. Cerca
OnKey. In questo esempio, On Error Resume Next viene utilizzato per ignorare eventuali errori generati. Ad esempio, se la cella attiva si trova nella prima riga, provare a spostarsi verso l'alto di una riga causa un errore che può essere tranquillamente ignorato. E se un foglio grafico è attivo, non esiste una cella attiva.
Eseguendo la seguente routine, si annullano gli eventi OnKey:
Applicazione Sub Cancel_OnKey (). Applicazione "{PgDn}" OnKey. OnKey "{PgUp}" End Sub
Utilizzando una stringa vuota come secondo argomento per il metodo OnKey,
non annulla l'evento OnKey. Piuttosto, fa sì che Excel ignori semplicemente la sequenza di tasti. Ad esempio, la seguente dichiarazione dice ad Excel di ignorare Alt + F4. Il segno di percentuale rappresenta il tasto Alt: Applicazione.OnKey "% {F4}", ""
Sebbene sia possibile utilizzare il metodo OnKey per assegnare un tasto di scelta rapida per l'esecuzione di una macro, è necessario utilizzare la finestra di dialogo Opzioni macro per questa attività.
Se chiudi la cartella di lavoro che contiene il codice e lascia Excel aperto, il metodo OnKey non verrà ripristinato. Di conseguenza, premendo il tasto di scelta rapida, Excel aprirà automaticamente il file con la macro. Per evitare che ciò accada, è necessario includere il codice nel codice evento Workbook_BeforeClose per reimpostare l'evento OnKey.
