Identificare l'Ultima cella modificata in un foglio di lavoro

John chiede se c'è 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 in particolare da un utente.

La risposta è sì una sorta di. È possibile utilizzare l'evento Worksheet_Change di scrivere un gestore in grado di registrare quando una cella particolare in un foglio di lavoro è cambiato. Una macro che fa questo potrebbe essere piuttosto semplice, come questo:

Private Sub Worksheet_Change (ByVal Target As Range)
Application.StatusBar = Target.Address
End Sub

La macro mette semplicemente l'indirizzo dell'ultima modifica nella barra di stato. Si potrebbe modificare la macro in modo da mantenere l'indirizzo in una variabile globale (dichiarata fuori del gestore di eventi) in questo modo:

Dim sAddr As String

Private Sub Worksheet_Change (ByVal Target As Range)
sAddr = Target.Address (False, False)
End Sub

È quindi possibile utilizzare una macro normale per recuperare l'indirizzo memorizzato nella variabile sAddr e fare quello che vuoi con esso.

Come per fare in modo che il gestore di eventi non registra alcuna modifica fatta da macro, l'unico modo per farlo è quello di disattivare la gestione degli eventi prima di eseguire qualsiasi comando macro che modificherà il foglio di lavoro. Per esempio, la seguente modifica proprietà EnableEvents potrebbe essere utilizzato prima e dopo un comando che cambia il contenuto della cella A1:

Application.EnableEvents = False
Range ("A1") = "Ciao"
Application.EnableEvents = True

Con la gestione degli eventi spento, il gestore di eventi Worksheet_Change non verrà attivato e la "ultima modifica" indirizzo non verrà aggiornato. Il risultato è che si finisce per seguire solo le modifiche apportate dagli utenti, non i cambiamenti fatti da macro.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (3819) si applica a Microsoft Excel 97, 2000, 2002, e 2003. È possibile trovare una versione di questo suggerimento per l'interfaccia ribbon di Excel (Excel 2007 e versioni successive) qui: Identificare l'Ultima cella modificata in un foglio di lavoro.