Eliminazione di fogli di lavoro in una macro (Microsoft Excel)
La maggior parte dei comandi di Excel è disponibile per l’uso all’interno delle macro, a condizione di conoscere i comandi VBA corretti per eseguire l’attività in questione. È 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 sospende 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 via sicura da percorrere, ma non aiuta molto la causa dell’automazione. Se desideri 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 cancella il foglio di lavoro:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys non fa altro che inserire le pressioni dei tasti nel buffer della tastiera, come se le digitate 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 si apre qualche 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 prevista.
Una soluzione migliore è disattivare le funzionalità di avviso di Excel per un breve periodo. Considera il seguente codice macro:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
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 agirà come se fosse stata visualizzata e l’opzione predefinita (Sì) selezionata.
È importante ricordare l’ultima riga di codice mostrata qui. Se non si imposta nuovamente la proprietà DisplayAlerts su True, Excel non mostrerà più messaggi di avviso, anche dopo che la macro è terminata. Ciò potrebbe causare problemi, come potresti immaginare. È meglio impostarlo su False solo per il breve periodo di tempo 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 sopra e c’è un solo foglio di lavoro nella cartella di lavoro, vedrai comunque un messaggio di errore. (Questo accade perché non è possibile eliminare l’ultimo foglio di lavoro in una cartella di lavoro.)
_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 (2293) si applica a Microsoft Excel 97, 2000, 2002 e 2003.