Giulia si chiede se esista un modo in VBA per identificare l’ultima cella che è stata modificata da un utente. Non vuole sapere se la cella è stata modificata da una macro, ma specificamente da un utente.
La risposta è sì, più o meno. È possibile utilizzare l’evento Worksheet_Change per scrivere un gestore che registrerà quando viene modificata una determinata cella in un foglio di lavoro. Una macro che fa questo potrebbe essere piuttosto semplice, come questa:
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)
La macro inserisce semplicemente l’indirizzo dell’ultima modifica nella barra di stato. È possibile modificare la macro in modo che mantenga l’indirizzo in una variabile globale (dichiarata all’esterno del gestore eventi) 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)
È quindi possibile utilizzare una normale macro per recuperare l’indirizzo memorizzato nella variabile sAddr e fare ciò che si desidera con esso.
Per quanto riguarda assicurarsi che il gestore di eventi non registri alcuna modifica apportata dalle macro, l’unico modo per farlo è disattivare la gestione degli eventi prima di eseguire qualsiasi comando macro che modificherà il foglio di lavoro. Ad esempio, la seguente modifica della proprietà EnableEvents potrebbe essere utilizzata prima e dopo un comando che modifica il contenuto della cella A1:
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 gestione degli eventi disattivata, il gestore dell’evento Worksheet_Change non verrà attivato e l’indirizzo dell’ultima modifica non verrà aggiornato. Il risultato è che finisci per tenere traccia solo delle modifiche apportate dagli utenti, non delle modifiche apportate dalle macro.