Diana deve tenere un registro delle attività che si sono verificate durante la giornata presso il suo centro di spedizione. Quando arriva una chiamata via radio, deve documentare chi, cosa, perché, ecc. Deve anche documentare l’ora (in formato 24 ore) in cui è arrivata la chiamata. Attualmente Diana fa tutto questo su carta. Vorrebbe creare un foglio di lavoro in cui digitare e fare in modo che il timestamp venga compilato automaticamente non appena inserisce il testo nella cella accanto ad esso in quella riga. Quando la cella accanto è vuota, desidera che la cella del timestamp sia vuota. In questo modo può risparmiare tempo evitando di controllare l’orologio per annotare l’ora.
Nell’affrontare questo problema, supponiamo che tu voglia che il timestamp vada nella colonna A e che inserirai il tuo “chi, cosa, perché” e altre informazioni a partire dalla colonna B. Il modo più semplice per farlo è utilizzare la scorciatoia integrata di Excel per inserire l’ora corrente: premere Ctrl + J. A condizione che la cella sia formattata per mostrare gli orari nel formato 24 ore, vedrai l’ora corrente come desideri.
Se desideri un approccio più automatico, potresti pensare di poter utilizzare una semplice formula nella colonna A, come questa:
=SE(B2<>""; ADESSO(); "")
Questo inserirà un orario nella colonna A (sempre che le celle relative siano formattate in modo appropriato) se la cella corrispondente nella colonna B contiene qualcosa, però non darà risultati soddisfacenti a causa di come funziona la funzione ADESSO. Ricorda che la funzione restituisce sempre l’ora corrente. Pertanto, ogni volta che il foglio di lavoro viene ricalcolato, viene controllato il contenuto della cella B2. Se c’è qualcosa, viene chiamata la funzione ADESSO, che restituisce l’ora corrente del ricalcolo. Ciò significa che l’ora mostrata nella colonna A cambierà sempre; non sarà un vero timestamp.
Potresti, tuttavia, rendere la formula nella colonna A un po’ più complessa, in questo modo:
=SE(B2<>""; SE(A2=""; ADESSO(); A2); "")
La prima volta che la inserirai, è probabile che riceverai un errore perché la formula presenta un riferimento circolare.
In altre parole, la formula fa riferimento alla cella in cui è inserita la formula (in questo caso, la formula va nella cella A2 e fa riferimento anche alla cella A2). Per far funzionare correttamente questa formula, devi seguire questi passaggi:
- Visualizza la finestra di dialogo Opzioni di Excel (visualizzando la scheda File della barra multifunzione e facendo clic su Opzioni).
- Fai clic su Formule sul lato sinistro dello schermo.
- Assicurati che la casella di controllo Abilita calcolo iterativo sia selezionata.
- Fai clic su OK.
Ora, ogni volta che inserisci qualcosa nella cella B2, l’ora viene inserita automaticamente nella cella A2. Tuttavia, l’ora viene inserita solo se la cella A2 era precedentemente vuota. Se non lo era (nel senso che conteneva già un’ora), il contenuto corrente della cella A2 rimane al suo posto.
Se non vuoi consentire riferimenti circolari (attivando calcoli iterativi), l’approccio migliore sarà attraverso una macro. Puoi usare l’evento Worksheet_Change per inserire automaticamente un’ora nella colonna A ogni volta che qualcosa viene inserito nella colonna B.
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)
Per impostare la macro, fai clic con il pulsante destro del mouse sulla scheda del foglio di lavoro e scegli Visualizza codice. È quindi possibile inserire la macro nella finestra del codice visualizzata (questo è un gestore di eventi che viene eseguito ogni volta che qualcosa nel foglio di lavoro cambia).
La macro verifica che qualcosa sia effettivamente inserito nella colonna B. In tal caso, la variabile tCell viene impostata sulla cella corrispondente nella colonna A. Se non è già presente nulla in quella cella, la data e l’ora correnti vengono inserite lì . Se vuoi solo l’ora, sostituisci la parte più interna della macro con questo:
tCell = Time tCell.NumberFormat = "hh:mm"
Una macro ancora più efficiente, che risolve anche il problema che quando viene eliminata una riga intera il codice restituisce la data attuale, è la seguente:
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)