Dichiarazioni di errore VBA - I 3 modi principali per gestire gli errori

Excel VBA sull'istruzione di errore

L' istruzione VBA On Error è un tipo di meccanismo di gestione degli errori che viene utilizzato per guidare il codice a fare cosa succede se incontra un qualsiasi tipo di errore, generalmente quando un codice incontra un errore l'esecuzione si interrompe ma con questa istruzione nel codice l'esecuzione del il codice continua poiché dispone di una serie di istruzioni da eseguire quando incontra un errore.

Anticipare l'errore nel codice ti rende un professionista nella codifica VBA. Non puoi rendere il codice efficiente al 100%. Anche se sei sicuro del tuo codice in un modo o nell'altro, potrebbe generare un errore.

È quasi impossibile identificare e gestire ogni tipo di errore, ma in VBA esistono diversi modi per gestire un errore. Durante la scrittura del codice, potresti non prevedere il tipo di codice di errore che può generare, ma se si verifica un errore, passerai più tempo a eseguire il debug che a scrivere il codice stesso.

Cos'è un errore?

Un errore non è altro che una riga di codice che non può essere eseguita a causa della funzionalità o del codice sbagliato. Quindi cerca di anticipare l'errore e gestirlo.

Ad esempio, se provi a eliminare il foglio che non è presente, ovviamente non possiamo eseguire quella riga di codice.

Un errore è di tre tipi, uno è un errore compilato a causa di variabili non dichiarate. Il secondo è un errore di immissione dei dati dovuto a voci errate da parte del programmatore e il terzo è un errore di runtime dovuto al fatto che VBA non è in grado di riconoscere la riga di codice. Per provare ad accedere o lavorare su un foglio di lavoro o una cartella di lavoro, che non è presente.

Ma abbiamo un'istruzione in VBA per gestire tutti questi tipi di errori, cioè l'istruzione "On Error".

Tipi di dichiarazioni di errore

Il punto chiave della gestione degli errori in VBA è l'istruzione "On Error". Ad esempio, In caso di errore, "riprendi la riga successiva", "vai a o passa a un'altra riga", ecc …

L'istruzione On Error ha tre tipi di istruzioni.

  1. GoTo 0 significa che ogni volta che si verifica un errore di runtime, Excel o VBA dovrebbero visualizzare la finestra del messaggio di errore che indica il tipo di errore che ha riscontrato. Non appena VBA esegue il codice, disabilita tutti i gestori di errori in quel particolare blocco del codice.
  2. Resume Next significa che ogni volta che si verifica l'errore, questa istruzione indica a Excel di ignorare quell'errore e di passare alla riga di codice successiva (riprendi dopo) senza visualizzare alcun messaggio di errore. Non significa che risolverà l'errore; piuttosto, ignora semplicemente l'errore.
  3. GoTo (etichetta) significa che ogni volta che VBA incontra un errore, vai all'etichetta assegnata. Questo fa sì che il codice salti alla riga specifica fornita dal programmatore.

I 3 modi principali per gestire gli errori in VBA

# 1 - In caso di errore, riprendi dopo

Supponiamo di dover dividere il valore di 20 per 0 e di aver dichiarato la variabile per assegnarle il risultato della divisione.

Codice:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Se esegui questo codice, verrà generato l'errore seguente.

Quindi non puoi dividere nessun numero per zero. Il numero di errore in fase di esecuzione è 11, ovvero Divisione per zero.

Ora aggiungerò un'altra riga al codice.

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 End Sub

Ora aggiungerò la seguente dichiarazione In caso di errore riprendi in alto.

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Ora, se eseguo questo codice, non mi darà alcun messaggio di errore; piuttosto, eseguirà la riga di codice successiva, cioè j = 20/2.

# 2 - Etichetta GoTo in caso di errore

Ho dichiarato tre variabili.

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

Per tutte queste tre variabili assegnerò un calcolo di divisione.

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Il risultato di tutti questi tre calcoli verrà visualizzato nella finestra del messaggio.

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Il valore di i è" & i & vbNewLine & "Il valore di j è "& j & _ vbNewLine &" Il valore di k è "& k & vbNewLine End Sub

Ora cercherò di eseguire questo codice poiché il calcolo di "I" non è corretto. Otterremo l'errore 11 in fase di esecuzione.

Ora aggiungerò l'istruzione "On Error Resume Next".

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "Il valore di i è" & i & vbNewLine & "Il il valore di j è "& j & _ vbNewLine &" Il valore di k è "& k & vbNewLine End Sub

Se lo eseguo, salterà il calcolo "I" ed eseguirà i restanti due calcoli, e il risultato è il seguente.

Ora invece di "On Error Resume Next", aggiungerò "On Error GoTo KCalculation".

Codice:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "Il valore di i è" & i & vbNewLine & "Il valore di j è" & j & _ vbNewLine & "Il valore di k è" & k & vbNewLine End Sub
Nota: qui, "KCalculation" è il nome dell'etichetta che avevo dato; puoi dare il nome della tua etichetta senza spazio.

Ora, se eseguo questa riga di codice, non salterà alla riga successiva. Piuttosto salterà al nome dell'etichetta che ho inserito, cioè "KCalcualtion". Qui ignorerà l'errore dato da "I" e inoltre non eseguirà il calcolo "j", ma salterà immediatamente a "KCalcualtion".

# 3 - Stampa il numero di errore in VBA

Alla fine del codice, possiamo anche stampare il numero di errore in una finestra di messaggio separata. La seguente riga di codice farà questo lavoro.

Codice:

Numero errore

Ora eseguirò questa prima finestra di messaggio del codice mostrerà i risultati del calcolo.

Fare clic su OK. Mostrerà un'altra finestra di messaggio per mostrare il numero di errore.

Andiamo 11; di conseguenza, ovvero Divisione per zero.

Possiamo anche ottenere la descrizione dell'errore invece del numero. Dobbiamo solo cambiare il codice. Di seguito il codice.

Codice:

Err. Descrizione

Mostrerà una descrizione come questa.

Cose da ricordare

  • Dopo aver inserito "On Error Resume Next" alla fine del codice, non dimenticare di aggiungere l'istruzione "On Error GoTo 0."
  • Il nome dell'etichetta dovrebbe essere lo stesso in entrambe le posizioni.
  • I nomi delle etichette non devono essere definiti con largo anticipo.
  • Alla fine, vedi sempre qual è stato l'errore che si è verificato attraverso la finestra di messaggio separata.

Articoli interessanti...