Antonio si chiede se esista un modo per eseguire automaticamente una macro ogni 15 minuti. Vorrebbe farlo senza influenzare le altre operazioni in Excel, il che significa che non vuole rimanere in loop in attesa per tutto il tempo.
La chiave per eseguire questo tipo di operazione è utilizzare il metodo .OnTime; consente di eseguire una macro particolare dopo un periodo di tempo specificato. Quindi, ad esempio, supponiamo che tu voglia eseguire una macro chiamata “MiaMacro” ogni 15 minuti. Puoi ottenere questo risultato semplicemente utilizzando la seguente macro a riga singola:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Esattamente 15 minuti dopo l’esecuzione di questa macro, la macro MiaMacro verrà eseguita automaticamente, indipendentemente da ciò che stai facendo altrove in Excel. Una volta scaduto il tempo specificato per il metodo .OnTime e avviato MiaMacro, MiaMacro non verrà eseguita nuovamente finché non si eseguirà nuovamente la macro StartTimer e .OnTime verrà nuovamente richiamato. Tutto ciò significa che potresti voler effettuare una chiamata a StartTimer sulla prima riga di MiaMacro o sull’ultima riga, a seconda di quando desideri riavviare il timer.
Potresti, se lo desideri, modificare leggermente StartTimer per consentire il passaggio di un parametro, in questo modo:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Questo approccio fornisce un po’ più di flessibilità perché puoi passare a StartTimer il numero di minuti che desideri utilizzare con il metodo .OnTime. Ad esempio, se desideri avviare MiaMacro dopo 12,5 minuti, potresti aggiungere la seguente riga al codice esistente:
Call StartTimer(12.5)
Se aggiungi una riga di questo tipo nel codice MiaMacro, MiaMacro verrà eseguita ogni 12,5 minuti per sempre, finché Excel è in esecuzione. Se vuoi fermare il timer e non vuoi fermare Excel, dovrai apportare alcune modifiche alla configurazione della macro:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Da notare la dichiarazione della variabile dTimeStore, che viene utilizzata per memorizzare l’ultima volta che è stato utilizzato il metodo .OnTime. Ciò consente, a un certo punto, di chiamare correttamente la macro EndTimer e, a sua volta, il metodo .OnTime per disattivare il timer. Da notare, inoltre, nella macro EndTimer la presenza di due virgole sequenziali nell’invocazione di .OnTime. Ciò è necessario per garantire che i parametri siano nella posizione corretta come richiesto dal metodo.