VBA in caso di errore Vai a 0 - Come utilizzare in caso di errore GoTo 0 in Excel VBA?

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" disabiliterà 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 terminare questo gestore degli errori. Dobbiamo usare 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?

Ad 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 i fogli seguenti nella mia cartella di lavoro.

Non ci sono fogli chiamati "Foglio1" e "Foglio2". Quando eseguiamo il codice, si verificherà un errore come il seguente.

Poiché non esiste un foglio denominato "Foglio1", si è verificato un 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 abbiamo bisogno per 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 una volta il tasto F8, l'esecuzione del codice salta alla riga successiva e l'attività di riga attiva verrà eseguita. Ora la riga attiva (linea gialla) è il gestore degli errori "On Error Resume Next" e il gestore degli errori sarà abilitato.

Ora si verifica un errore. Verrà ignorato finché 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 è possibile inserire il valore nella cella A1 come 500, ma ciò che fa è che inserirà il valore di 500 nella cella A1 a seconda del 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. Questa attività di linea verrà eseguita.

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 un disabler 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.

Articoli interessanti...