Facciamo un orologio sul Foglio di lavoro. (25/05/03) A volte abbiamo la necessità di conoscere che ore sono allorchè lavoriamo sui fogli di Excel. Possiamo usare la funzione di Excel =ADESSO() inserita in una cella, che ci restituisce la data e l'ora di sistema. L'orario non scorre però come in un orologio, ma rimane fisso al momento in cui abbiamo aperto il foglio, e si aggiorna soltanto se inseriamo o modifichiamo dei valori sul foglio di lavoro, e l'aggiornamento comunque non avviene nella scala dei minuti se effettuiamo una variazione in una cella all'interno del minuto dell'orario attualmente presente nella cella con la funzione. Non è proprio ciò che possiamo considerare un : "orologio". Sfruttando la funzione vba "Timer", è però possibile usare una routine "autoinnescante" che, trascorso un determinato periodo di tempo, che decideremo noi, riattivi la funzione =ADESSO() (in inglese: NOW), generando l'aggiornamento dell'orario. Attenzione: la macro qui presentata può provocare effetti indesiderati disabilitando alcune barre dei menù. Prima di deciderne un eventuale utilizzo, provatela su file non importanti. Creiamo quindi una macro che inseriremo in un modulo e potremo attivare "l'orologio" associando la macro ad un pulsante, ma meglio ancora potremo sfruttare un evento che per tutti noi è quasi impossibile non generare: il cambio di selezione di una cella sul foglio di lavoro; in questo modo attiveremo la macro ad ogni operazione che eseguiamo sul foglio di lavoro. Non è necessario riscrivere nel Worksheet_SelectionChange del foglio di lavoro scelto tutte le istruzioni, ma sarà sufficiente richiamare il nome della macro, così:
Private Sub Worksheet_SelectionChange(ByVal Target As
Range) Un avvertimento: poichè una volta avviata la macro, questa continua a girare restando sempre attiva, se avremo bisogno di compilare altre istruzioni vba, sarà necessario "stoppare" la macro stessa, selezionando la routine e cliccando il pulsantino quadrato blu che troviamo nel menù dell'editor di visual basic, che corrisponde al comando "Ripristina", oppure dal menù Esegui/Ripristina. Sarà comunque possibile eseguire modifiche sul foglio di lavoro anche con la macro avviata, come pure lanciare altre macro precedentemente compilate; questo perchè nelle istruzioni sotto riportate, usiamo la funzione vba "DoEvents" che sospende l'esecuzione in modo che il sistema operativo possa elaborare altri eventi. Vediamo le istruzioni: nell'esempio uso la cella A1, formato cella = Ora, come cella Orologio: (tenere presente che se avviamo la macro tramite pulsante, (mettiamo dal Foglio1), la stessa, restando attiva, sarà efficace in tutte le celle A1 di tutti i fogli della cartella, basterà spostarsi su un'altro foglio, per veder comparire in A1 l'orologio; lasciare quindi disponibile (non usare per altre istruzioni o dati) la cella che deciderete di usare come orologio); la macro attivata da pulsante si fermerà soltanto se in una cella clicchiamo per inserire una formula, mentre sul foglio di cui sfruttiamo l'evento SelectionChange, selezionando appunto una qualsiasi cella, la riattiviamo:
Buon lavoro. |