VBA On Error Goto 0

Excel VBA in caso di errore Goto 0

VBA On Error GoTo 0 è un'istruzione del gestore degli errori utilizzata per disabilitare il gestore degli errori abilitato nella procedura. Viene indicato come "Error Handler Disabler".

La gestione degli errori in uno qualsiasi dei linguaggi di programmazione è una master class che tutti i programmatori devono comprendere. Anche il linguaggio di programmazione VBA e abbiamo anche tecniche di gestione degli errori in questo linguaggio di programmazione. "On Error Resume Next" abilita il gestore degli errori e "On Error GoTo 0" disabilita il gestore degli errori abilitato.

Sia "On Error Resume Next" che "On Error GoTo 0" sono coppie che devono essere utilizzate in tandem per l'efficienza del codice. Per gestire l'errore dobbiamo iniziare con l'istruzione "On Error Resume Next" e per terminare questo gestore di errori dobbiamo utilizzare l'istruzione "On Error GoTo 0".

Qualsiasi codice di riga scritto tra queste istruzioni ignorerà qualsiasi tipo di errore che si è verificato durante il procedimento.

Come utilizzare l'istruzione On Error GoTo 0?

Puoi scaricare questo modello VBA On Error Goto 0 Excel qui - Modello VBA On Error Goto 0 Excel

Per un esempio, guarda il codice seguente.

Codice:

 Sub On_ErrorExample1 () Worksheets ("Sheet1"). Seleziona Range ("A1"). Value = 100 Worksheets ("Sheet2"). Seleziona Range ("A1"). Value = 100 End Sub 

Quello che fa il codice sopra è che selezionerà prima il foglio di lavoro denominato "Foglio1" e nella cella A1 inserirà il valore 100.

Codice:

Fogli di lavoro ("Foglio1"). Seleziona Intervallo ("A1"). Valore = 100

Quindi selezionerà il foglio di lavoro denominato "Sheet2" e inserirà lo stesso valore.

Codice:

Fogli di lavoro ("Foglio2"). Seleziona Intervallo ("A1"). Valore = 100

Ora ho sotto i fogli nella mia cartella di lavoro.

Non ci sono fogli chiamati "Foglio1" e "Foglio2", quando eseguiamo il codice incontreremo un errore come il seguente.

Poiché non è presente alcun foglio denominato "Foglio1", è stato riscontrato l'errore "Indice fuori intervallo". Per gestire questo errore aggiungerò un'istruzione del gestore degli errori "On Error Resume Next" nella parte superiore della macro.

Codice:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Seleziona Range ("A1"). Value = 100 Worksheets ("Sheet2"). Seleziona Range ("A1"). Value = 100 End Sub 

Ora esegui il codice e guarda cosa succede.

Non fornirà alcun messaggio di errore perché è abilitata l' istruzione del gestore degli errori On Error Resume Next .

Immagina lo scenario in cui dobbiamo ignorare l'errore in caso di non disponibilità del foglio di lavoro "Foglio1" ma dobbiamo notificare se non esiste un foglio di lavoro chiamato "Foglio2".

Poiché abbiamo aggiunto On Error Resume Next in alto, ha iniziato a gestire l'errore ma, allo stesso tempo, dobbiamo specificare quante righe dobbiamo ignorare questo errore.

In questo esempio, dobbiamo solo ignorare l'errore per il primo foglio di lavoro, ma per il secondo foglio in poi è necessario che l'errore si verifichi se non è presente il foglio di lavoro "Foglio2". Quindi, dopo il primo codice del foglio di lavoro, viene aggiunta la riga di disabilitazione dell'errore On Error GoTo 0.

Codice:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Seleziona Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Seleziona Range ("A1"). Value = 100 End Sub 

Ora esegui il codice riga per riga per vedere l'impatto premendo il tasto F8.

Ora, se si preme il tasto F8 una volta, l'esecuzione del codice salterà alla riga successiva e verrà eseguita l'attività di riga attiva. Ora la riga attiva (linea gialla) è il gestore degli errori "On Error Resume Next" e il gestore degli errori sarà abilitato.

Ora qualsiasi errore si verifica, verrà ignorato fino a quando non esegue il gestore degli errori disabilita l'istruzione " On Error GoTo 0 ".

Nel tentativo precedente, abbiamo riscontrato errori, ma premi ancora una volta il tasto F8 e vediamo la magia.

Senza dare alcun tipo di errore ha ripreso l'esecuzione del codice anche se non c'è il foglio di lavoro “Foglio2” da selezionare. Ora premi di nuovo F8.

Poiché non c'era Foglio1, non può inserire il valore nella cella A1 come 500, ma quello che fa è che inserirà il valore di 500 nella cella A1 qualunque sia il foglio di lavoro attivo. Il mio foglio attivo durante l'esecuzione del codice era "Foglio3", quindi il valore di 100 viene inserito nella cella A1.

Ora la riga di codice attiva è " On Error GoTo 0 ", premendo il tasto F8 verrà eseguita l'attività di questa riga.

Poiché "On Error GoTo 0" viene eseguito, ha interrotto il processo di gestione degli errori e ricomincia a mostrare gli errori se si verificano. Premere il tasto F8 e visualizzare l'errore.

Nel caso precedente senza On Error GoTo 0, ha ignorato anche questo errore, ma poiché abbiamo aggiunto il disablatore del gestore degli errori ha iniziato a mostrare nuovamente l'errore.

Cose da ricordare qui

  • Sia On Error Resume Next che On Error GoTo 0 devono essere utilizzati come " Error Handler Enabler " e " Error Handler Disabler ".
  • Qualsiasi riga di codice tra queste due istruzioni incontra un errore e verrà ignorata.
  • Se è presente l'istruzione On Error GoTo 0, dopo l'uscita dalla procedura secondaria il gestore degli errori verrà disabilitato.