Identificare l’ultima cella modificata in un foglio di lavoro

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.

ABBONATI

(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.

ABBONATI

(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.

ABBONATI

(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.

 

Tags: , , , ,

Ti è stato utile?