Come eliminare velocemente fogli di Excel in una Macro

La maggior parte dei comandi di Excel è disponibile per l’uso all’interno delle tue macro, a condizione che tu conosca i comandi VBA appropriati per eseguire l’attività. È possibile utilizzare il seguente comando macro per eliminare il foglio di lavoro attivo:

ActiveSheet.Delete

 

Se esegui il comando nella tua macro, scoprirai che Excel mette in pausa la macro e ti chiede se sei sicuro di voler eliminare il foglio di lavoro. Quando si fa clic su Sì, il foglio di lavoro viene eliminato e la macro riprende.

L’idea alla base delle macro, ovviamente, è automatizzare molte delle attività che svolgi regolarmente. Fermarsi e chiedere conferma può essere la strada sicura da percorrere, ma non fa molto per aiutare la causa dell’automazione. Se vuoi che il foglio di lavoro venga eliminato senza una pausa, ci sono un paio di cose che puoi fare. Innanzitutto, puoi utilizzare il metodo SendKeys per simulare la pressione del tasto Invio, che equivale a fare clic su Sì nella finestra di dialogo di conferma. Tutto quello che devi fare è aggiungere una singola riga prima della riga che elimina il foglio di lavoro:

Application.SendKeys ("{ENTER}")
ActiveSheet.Delete

 

SendKeys non fa altro che inserire i tasti premuti nel buffer della tastiera, come se li digitassi dalla tastiera. Pertanto, la riga SendKeys deve precedere la riga Delete in modo che la pressione del tasto Invio sia nel buffer prima che sia necessaria.

Qualsiasi sviluppatore di macro di lunga data può indicare diversi potenziali problemi con l’utilizzo di SendKeys, il problema principale è che non è possibile utilizzarlo per specificare che si accetta l’opzione Sì nella finestra di dialogo di conferma e solo in quella finestra di dialogo. Per quanto improbabile, se viene visualizzata un’altra finestra di dialogo (forse generata da un programma diverso) al momento giusto, la pressione del tasto Invio verrà applicata a quella finestra di dialogo, non a quella che ti aspettavi.

Una soluzione migliore consiste nel disattivare le funzionalità di avviso di Excel per un breve periodo. Si consideri il seguente codice macro:

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)

 

Questo codice disattiva gli avvisi, elimina il foglio di lavoro e quindi riattiva gli avvisi. Mentre sono disattivati, Excel non visualizzerà la finestra di dialogo di conferma, ma si comporterà come se fosse stata visualizzata e l’opzione predefinita (Sì) selezionata.

È importante ricordare l’ultima riga di codice mostrata qui. Se non reimposti la proprietà DisplayAlerts su True, Excel non mostrerà più messaggi di avviso, anche dopo che la macro è terminata. Ciò potrebbe causare problemi, come puoi immaginare. È meglio impostarlo su False solo per il breve periodo in cui è necessario disattivare gli avvisi.

Anche con DisplayAlerts impostato su False, verranno comunque visualizzati messaggi di errore, se ne viene generato uno. Ad esempio, se esegui il codice precedente e nella cartella di Excel è presente un solo foglio di lavoro, verrà comunque visualizzato un messaggio di errore (ciò accade perché non è possibile eliminare l’ultimo foglio di lavoro in una cartella di Excel).

Tags: , , , , ,

Ti è stato utile?