Poiché si lavora in Excel, è presente una sorta di “rete di sicurezza” per quanto riguarda le modifiche apportate. La maggior parte delle persone sa che se rovina le cose, può premere rapidamente Ctrl + Z o scegliere il comando Annulla dal menu Modifica o utilizzando lo strumento Annulla sulla barra degli strumenti. Se non ti piace quello che hai appena fatto, puoi facilmente annullarlo e tornare alle cose come erano prima.

Quando si esegue una macro, tuttavia, la macro non “funziona correttamente” con l’elenco Annulla. In effetti, l’esecuzione di una macro cancella completamente l’elenco Annulla e quindi non è possibile annullare automaticamente gli effetti dell’esecuzione della macro. Non esiste un comando intrinseco, in Excel o in VBA, per preservare l’elenco Annulla. Tuttavia, ci sono un paio di modi in cui puoi affrontare il problema.

Se ritieni di voler annullare gli effetti di una macro, la prima cosa che puoi fare è salvare la cartella di lavoro prima di eseguire la macro. Questo, in effetti, ti dà una versione “pre-macro” della cartella di lavoro.

Se vuoi tornare in un secondo momento a questa versione, chiudi semplicemente la cartella di lavoro senza salvarla e poi ricaricala dal disco.

Un’altra opzione è ripensare al modo in cui esegui le macro. Se hai una macro che elabora molte informazioni nel tuo foglio di lavoro, codifica la macro in modo che mantenga, in memoria, lo stato di tutto ciò che cambia. È quindi possibile creare una macro separata che legge queste informazioni e annulla efficacemente gli effetti della prima macro.

Per rendere questo approccio davvero utile, l’ultimo passaggio nella macro principale può essere “inserire” le informazioni nello stack di annullamento. Queste informazioni possono quindi essere utilizzate, tranne l’utente, per “annullare” la macro che hai creato. Ad esempio, il seguente comando macro potrebbe essere l’ultimo nella tua macro principale:

Application.OnUndo "Primary Macro", "UndoPrimary"

Dopo questo comando, quando l’utente guarda l’elenco Annulla, vedrà il testo “Macro primaria”. Se scelgono questa opzione dall’elenco Annulla, viene eseguita la macro “Annulla” (UndoPrimary).

Dovresti notare che questo approccio non salva ciò che era nell’elenco Annulla prima di eseguire la macro: sembra che non ci sia modo per farlo. Quando la tua macro principale è in esecuzione, ci sarà solo una singola opzione disponibile nell’elenco Annulla: Macro primaria.

_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 (2060) 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: