Preservare l’elenco di annullamento quando si lavora con una macro

Mentre lavori in Excel, c’è un po’ di “rete di sicurezza” per quanto riguarda le modifiche apportate. La maggior parte delle persone sa che se incasina le cose, può premere rapidamente Ctrl+Z o fare clic sullo strumento Annulla nella parte superiore sinistra della finestra del programma. Se non ti piace quello che hai appena fatto, puoi facilmente annullarlo e tornare a come erano le cose prima.

Quando si esegue una macro, tuttavia, la macro non “va d’accordo” con l’elenco di annullamento. Infatti, l’esecuzione di una macro cancella completamente l’elenco di annullamento e pertanto non è possibile annullare automaticamente gli effetti dell’esecuzione della macro. Non esiste un comando intrinseco, in Excel o in VBA, per preservare l’elenco di annullamento. 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 si desidera ripristinare successivamente questa versione, è sufficiente chiudere la cartella di lavoro senza salvare e quindi ricaricarla dal disco.

Un’altra opzione è ripensare il modo in cui esegui le tue 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 legga queste informazioni e annulli efficacemente gli effetti della prima macro.

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

 

Application.OnUndo "Macro Primaria", "UndoPrimaria"

 

 

Dopo questo comando, quando l’utente guarda l’elenco di annullamento, vedrà il testo “Macro primaria”. Scegliendo questa opzione dall’elenco di annullamento, viene eseguita la macro “di annullamento” (UndoPrimaria).

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

Nel caso volessi inserire questa macro nella tua cartella PERSONAL.XLSB in modo che sia disponibile tutto il tempo, ricordati di adattare il codice in modo che lavori sulla cartella attiva (ActiveWorkbook).

 

Tags: , ,

Ti è stato utile?