VBA On Error GoTo

Excel VBA in caso di errore GoTo

Gli errori sono parte integrante di qualsiasi linguaggio di codifica e le macro VBA non sono diverse da questo. Secondo me, trovare il motivo per cui si verifica l'errore è il 90% del lavoro svolto e il 10% sta nel modo in cui correggerlo. In ogni linguaggio di codifica i programmatori usano il loro modo di gestire gli errori nella loro codifica, così usiamo anche noi nella codifica VBA. Spesso dobbiamo ignorare l'errore o spesso potremmo voler andare a cose specifiche quando si verifica l'errore. "On Error" è l'istruzione che dobbiamo utilizzare in VBA per gestire gli errori.

Questa affermazione ha tre tipi di dichiarazioni e di seguito è riportato l'elenco.

  1. In caso di errore vai a 0
  2. In caso di errore vai a [etichetta]
  3. In caso di errore, riprendi dopo

In questo articolo, vedremo come queste tre istruzioni vengono utilizzate nella codifica VBA per gestire qualsiasi tipo di errore.

Come utilizzare VBA sulle dichiarazioni di errore?

Puoi scaricare questo modello di istruzione GoTo VBA On Error qui - Modello di istruzione GoTo VBA On Error

# 1 - In caso di errore, riprendi dopo

Come l'istruzione stessa dice "On Error Resume Next" significa che ogni volta che si verifica l'errore nel codice "resume" la riga successiva del codice ignorando il codice della riga di errore. Ora dai un'occhiata al codice sottostante.

Nel codice seguente ho menzionato i nomi dei fogli di lavoro e ho chiesto di inserire il valore nella prima cella come "Test di errore".

Codice:

 Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Seleziona Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Seleziona Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Seleziona intervallo ("A1"). Value = "Error Testing" Worksheets ("Ws 4"). Seleziona Range ("A1"). Value = "Error Testing" End Sub 

Ora ho sotto i fogli di lavoro nella mia cartella di lavoro.

  • Eseguirò il codice e vedrò cosa succede.

  • Abbiamo ricevuto l'errore "Indice fuori intervallo", fai clic su "Debug" per vedere in quale riga abbiamo ricevuto l'errore.

  • Quindi nella riga "Fogli di lavoro (" Ws 3 "). Seleziona" abbiamo ricevuto un errore, questo perché nella nostra cartella di lavoro non esiste un foglio di lavoro denominato "Ws 3", quindi si è verificato un errore.

In questi casi potremmo voler ignorare l'errore e riprendere l'esecuzione del codice alla riga successiva, è qui che entra in gioco il nostro gestore degli errori "On Error Resume Next".

  • Tutto quello che dobbiamo fare è aggiungere la riga "On Error Resume Next" all'inizio della macro.

Ora esegui questo codice e non mostrerà alcun messaggio di errore perché ogni volta che il codice incontra un errore ignorerà l'errore e riprenderà alla riga di codice successiva.

# 2 - In caso di errore GoTo 0

Non si tratta di un gestore di errori ma di un abilitatore di messaggi di errore dopo aver disabilitato il messaggio di errore utilizzando l'istruzione "On Error Resume Next".

Quando si utilizza l'istruzione "Resume Next", le macro VBA inizia a ignorare qualsiasi tipo di errore si verifica e continua a continuare con la riga di codici successiva. Ma non vogliamo che ciò accada tutto il tempo perché alcuni errori dobbiamo ignorare intenzionalmente altri abbiamo bisogno di una notifica.

Se un insieme specifico di codice genera un errore in quel blocco di codice, dobbiamo solo ignorare l'errore altre parti del codice non vogliamo ignorare l'errore.

  • Guarda l'immagine sottostante per l'utilizzo dell'istruzione "On Error GoTo 0".

Quindi ora gli errori verranno ignorati finché il codice non trova l'abilitatore di notifica degli errori "On Error GoTo 0". Una volta che questa riga di codice esegue le macro torna alla normalità e inizia a lanciare messaggi di errore come al solito.

# 3 - Etichetta GoTo in caso di errore

Abbiamo visto come ignorare l'errore e come riattivare la notifica dell'errore. Ora usando questo metodo possiamo andare a una specifica riga di codice.

In questo metodo "Etichetta" significa che possiamo dare qualsiasi nome a questa etichetta e la stessa etichetta dovrebbe essere data anche alla riga di codice richiesta.

Ad esempio, guarda lo stesso codice dell'esempio precedente.

Ora eseguiamo il codice riga per riga premendo il tasto funzione F8.

Ora la macro leggerà l'istruzione del gestore degli errori, premere il tasto F8 per eseguire il primo codice del foglio di lavoro 2.

Ora la macro sta per eseguire il terzo codice del foglio di lavoro che non è presente nella cartella di lavoro, premere il tasto F8 e vedere cosa succede.

Poiché la macro ha riscontrato un errore nella riga di codice sottostante, è passata all'etichetta del gestore degli errori "ErrorMessage", descritta nell'istruzione "On Error GoTo [Label]".

Ora la finestra di messaggio mostrerà il messaggio come "Si è verificato un errore e uscita dalla macro".

Cose da ricordare

  • VBA On Error GoTo 0 abiliterà nuovamente la notifica di errore, quindi non dimenticare di aggiungerlo dopo aver fornito un gestore degli errori.
  • Devi essere assolutamente sicuro in quale parte del codice vuoi ignorare l'errore, quindi includi il gestore degli errori solo per quel blocco di codice.