Identificazione dell’ultima cella modificata in un foglio di lavoro (Microsoft Excel)
John si chiede se in VBA esiste un modo 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ì, 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:
Private Sub Worksheet_Change(ByVal Target As Range) Application.StatusBar = Target.Address End Sub
La macro inserisce semplicemente l’indirizzo dell’ultima modifica nella barra di stato. Potresti modificare la macro in modo che mantenga l’indirizzo in una variabile globale (dichiarata al di 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 normale macro per recuperare l’indirizzo memorizzato nella variabile sAddr e fare quello che vuoi con esso.
Per quanto riguarda la sicurezza che il gestore di eventi non registri le modifiche apportate dalle macro, l’unico modo per farlo è disattivare la gestione degli eventi prima di eseguire qualsiasi comando macro che modifichi 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:
Application.EnableEvents = False Range("A1") = "Hello" Application.EnableEvents = True
Con la gestione degli eventi disattivata, il gestore dell’evento Worksheet_Change non verrà attivato e l’indirizzo “ultima modifica” non verrà aggiornato. Il risultato è che si finisce per monitorare solo le modifiche apportate dagli utenti, non le modifiche apportate dalle macro.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3819) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: