VBA Ignora errore

Questo tutorial dimostrerà come garantire che VBA ignori un errore durante l'esecuzione del codice.

A volte, quando si costruisce il codice VBA, si desidera che VBA ignori una riga di codice quando si verifica un errore. Questo può essere effettivamente molto utile se, ad esempio, si desidera eliminare un foglio se esiste, ma ignorare quella riga di codice se il foglio non esiste.

(Vedi la nostra Guida alla gestione degli errori per ulteriori informazioni sugli errori VBA)

In caso di errore Riprendi Avanti

Per ignorare una riga di codice in una procedura, usiamo il comando In caso di errore Riprendi Avanti dichiarazione.

123456 Sub TestErrorIgnore()In caso di errore Riprendi AvantiActiveWorkbook.Sheets("Foglio4").selectActiveSheet.Elimina'più codice quiFine sottotitolo

Nell'esempio sopra, an In caso di errore Riprendi Avanti dichiarazione è stata posta all'inizio della procedura. Il codice viene quindi costruito per selezionare Sheet4 e quindi eliminarlo.

Tuttavia, a causa del In caso di errore Riprendi Avanti istruzione, se il codice non trova Sheet4, passerà semplicemente alla riga successiva e cancellerà qualsiasi foglio attivo che trova.

Questo può essere piuttosto pericoloso se si desidera eliminare solo il foglio 4 e non solo il foglio attivo. Per evitare questo errore, possiamo impostare una variabile sul foglio 4 ed eliminare solo quel foglio SE esiste.

1234567 Sub TestErrorIgnore()Dim ws come foglio di lavoroIn caso di errore Riprendi AvantiImposta ws = ActiveWorkbook.Sheets("Sheet4")w.Elimina'più codice quiFine sottotitolo

Ora, quando viene eseguito il codice, verrà eliminato solo Sheet4 SE Sheet4 esiste davvero. Se il foglio 4 non esiste, VBA ignorerà l'errore e continuerà ad andare avanti.

Un altro esempio di ciò è se desideri eliminare tutti i fogli dalla cartella di lavoro utilizzando un ciclo. Poiché una cartella di lavoro di Excel deve avere almeno un foglio, il codice eliminerà tutti i fogli tranne uno.

123456 Sotto Elimina fogli()Dim ws come foglio di lavoroPer ogni ws in ActiveWorkbook.Sheetsw.EliminaAvanti wFine sottotitolo

Il codice sopra si fermerà con un errore.

Facendo clic su Debug ci porterà nel codice con la riga incriminata evidenziata!

Tuttavia, aggiungendo il In caso di errore Riprendi Avanti la riga al codice impedirà l'errore e la routine lascerà sempre un foglio nella cartella di lavoro.

12345678 Sotto Elimina fogli()'aggiungi la riga di errore quiIn caso di errore Riprendi AvantiDim ws come foglio di lavoroPer ogni ws in ActiveWorkbook.Sheetsw.EliminaAvanti wFine sottotitolo

In caso di errore Vai a 0

Spesso se usi In caso di errore Riprendi Avanti per ignorare un errore, si desidera che l'errore venga intercettato in un secondo momento nel codice o si desidera che il codice smetta di funzionare se si verifica un errore in futuro. Possiamo reimpostare la gestione degli errori in modo che il codice si interrompa nuovamente in caso di errori aggiungendo la riga On Error GoTo 0.

12345678 Sub TestErrorIgnore()Dim ws come foglio di lavoroIn caso di errore Riprendi AvantiImposta ws = ActiveWorkbook.Sheets("Sheet4")w.EliminaIn caso di errore Vai a 0'più codice quiFine sottotitolo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave