Vincenzo utilizza un foglio di lavoro di Excel per l’inserimento dei dati. Le informazioni vengono inserite nella colonna A e Vincenzo vorrebbe avere un modo per aggiungere automaticamente data e ora nella colonna B, adiacente al valore inserito nella colonna A, che indichi quando il valore è stato inserito.
Esistono diversi modi per eseguire questa operazione. Il primo consiste nell’inserire manualmente l’informazione selezionando la cella adiacente nella colonna B e premendo F2 per entrare in modalità modifica e poi Alt Gr + A inserire uno spazio e poi Ctrl + J. Questa scorciatoia inserisce data e ora correnti nella cella. Il problema con questo approccio, ovviamente, è che non è automatico e richiede alcuni movimenti e sequenze di tasti extra per implementarlo.
Un approccio migliore sarebbe utilizzare una formula per inserire l’ora. La funzione ADESSO restituisce la data e l’ora correnti e puoi utilizzarla in una cella in questo modo:
=ADESSO()
Naturalmente, questa semplice formula viene aggiornata ogni volta che il foglio di lavoro viene ricalcolato. Ciò significa che la funzione restituisce l’ora corrente ogni volta che si immette un valore nella colonna A. Questo non è auspicabile perché non si desidera che le ore precedenti vengano aggiornate. Potresti provare a usare una formula per verificare se c’è qualcosa nella colonna A, come in questo esempio:
=SE(A3="";"";SE(B3="";ADESSO();B3))
Il problema è che una formula come questa introduce un riferimento circolare nel foglio di lavoro, che presenta tutta una serie di sfide con cui lavorare che abbiamo trattato anche in questo articolo. Un approccio migliore consiste nel creare una macro che venga eseguita automaticamente ogni volta che viene inserito qualcosa nella colonna A. Fai clic con il pulsante destro del mouse sulla scheda del foglio di lavoro utilizzato per l’immissione dei dati e scegli Visualizza codice dal menu contestuale. Vedrai la finestra Codice per il foglio di lavoro nel Visual Basic Editor, quindi inserisci questo nella finestra:
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)
Con la macro attiva, ogni volta che inserisci qualcosa in una cella nella colonna A, la cella adiacente nella colonna B conterrà la data e l’ora di inserimento. Se elimini qualcosa nella colonna A, viene cancellata anche la cella adiacente nella colonna B.
In realtà potremmo rendere la macro anche più efficiente. La seguente versione è molto più breve:
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)
Nel caso in cui la colonna da monitorare non fosse la “A”, sarà sufficiente modificare la seguente riga:
If .Column <> 1 Or .Columns.Count > 1 Then Exit Sub
Ad esempio, nel caso volessimo monitorare la colonna “B”, dovremmo scrivere:
If .Column <> 2 Or .Columns.Count > 1 Then Exit Sub
Nel caso volessimo monitorare l’aggiornamento di ogni cella di un particolare foglio, inserendo data e ora di aggiornamento in una singola cella specifica, potremmo invece adottare questo approccio:
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)
L’esempio qua sopra scriverà data e ora di aggiornamento nella cella J1.
Se desideri aggiornare J1 solo quando viene aggiornato un determinato intervallo (ad esempio C9: C22), prova invece questo:
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)