Gestione degli errori VBA di Excel

La gestione degli errori è un meccanismo molto utile e significativo per i linguaggi di programmazione come VBA. Il controllo o la prevenzione degli errori è un aspetto della gestione degli errori, il che significa prendere misure efficaci e significative all'interno di uno script VBA per evitare il verificarsi di un messaggio pop-up di errore

Diversi tipi di errori in VBA

  1. Errore di sintassi o errore di analisi
  2. Errore di compilazione o compilazione
  3. Errore di runtime
  4. Errore logico

Gli errori di cui sopra possono essere corretti con l'aiuto del debug di seguito indicato e diverse dichiarazioni "On Error" inserite tra un codice.

In caso di errore Riprendi Successivo

In caso di errore, andare a 0

In caso di errore Vai

In caso di errore Vai a -1

Gestione degli errori VBA con l'aiuto di diverse dichiarazioni "ON ERROR"

Puoi scaricare questo errore VBA nella gestione del modello Excel qui - Errore VBA nella gestione del modello Excel

Esempio n. 1 - Errori di compilazione VBA

Quando si verifica un errore in un'istruzione o sintassi del codice VBA, quando si digita erroneamente un codice per errore, questo verrà evidenziato in rosso a seconda delle opzioni di impostazione degli strumenti (Se è stato selezionato Controllo automatico della sintassi).

Una finestra di messaggio popup di errore di compilazione verrà visualizzata quando si esegue il codice con sintassi errata.

Codice:

 Sottotitoli SYNTAX_ERROR () MsgBox questo è il mio primo programma End Sub 

"COMPILE ERROR: VARIABLE NOT DEFINED" è l'errore più comune che appare come messaggio popup. quando la variabile di riferimento non è definita, si verifica questo errore.

Codice:

 Sottotitoli VBA_FORMAT1 () A = 19049.83 A = Formato (A, "STANDARD") Sottosquadro A fine 

Nell'esempio sopra, non ho dichiarato il tipo di variabile come String, pertanto si verifica questo errore. Quindi, devo dichiarare una variabile come Dim A As String.

Codice:

 Sottotitoli VBA_FORMAT1 () Dim A As String A = 19049.83 A = Formato (A, "STANDARD") MsgBox A End Sub 

Esempio n. 2 - Errore di runtime VBA

Quando in un'istruzione sono presenti dichiarazioni matematiche o termini impossibili, si verifica questo errore di runtime.

Codice:

 Sottotitoli RUNTIME_1 () MsgBox 6/0 End Sub 

Esempio n. 3 - Errori o bug logici VBA

Questi errori sono molto difficili da tracciare, né verranno evidenziati né appare un messaggio di errore pop-up. si tradurrà in azioni impreviste e risultati errati.

Esempio: quando nel codice sono presenti due variabili, potrebbe contenere una errata. In questo caso, si verifica un errore logico.

Come prevenire errori in VBA?

Diamo un'occhiata a Come prevenire i diversi tipi di errori sopra riportati in VBA Excel.

Passaggio 1: per aprire una finestra dell'editor VB Selezionare o fare clic su Visual Basic nel gruppo Codice nella scheda Sviluppatore oppure è possibile fare clic direttamente sul tasto di scelta rapida Alt + F11 .

Passaggio 2: per creare un modulo vuoto, sotto gli oggetti Microsoft Excel, fare clic con il pulsante destro del mouse sul foglio 1 (VB_ERROR HANDLING) e inserire il modulo in modo da creare un nuovo modulo vuoto.

Gestione errori VBA con opzione di debug

È meglio compilare il codice prima di eseguirlo. Per seguire la compilazione, è necessario seguire i passaggi seguenti. Nella barra degli strumenti del menu VB, sotto l'opzione Debug, dobbiamo selezionare un progetto VBA di compilazione. Quando fai clic su di esso, controlla il codice passo dopo passo, una volta trovato l'errore, lo evidenzierà e apparirà un messaggio popup, quindi è necessario correggerlo. una volta corretto, è necessario compilare per trovare l'errore successivo nel codice.

Nota: con l'aiuto dell'opzione di compilazione, possiamo solo correggere l'errore di compilazione e sintassi.

Gestione degli errori VBA con l'aiuto di diverse dichiarazioni "ON ERROR"

1. In caso di errore Riprendi Successivo

Qui, l'errore verrà ignorato e il codice andrà avanti.

Nell'esempio citato di seguito, 6 non può essere diviso per zero, se lo si esegue senza immettere l'istruzione On Error Resume Next, si verifica l'errore di runtime riportato di seguito.

Codice:

 Sottotitoli RUNTIME_1 () MsgBox 6/0 End Sub 

Se On Error Resume Next viene inserito nella parte superiore del codice dopo l'istruzione Sub, ignora l'errore di runtime e passa all'istruzione successiva, che risulta nell'output di 6/2 cioè 3 (finestra di messaggio popup con il risultato di essa).

Codice:

 Sottotitoli RUNTIME_2 () su errore Riprendi successivo MsgBox 6/0 MsgBox 6/2 End Sub 

2. In caso di errore Vai a 0 e Errore a -1

'On Error GoTo 0' interromperà il codice sulla riga specifica che causa l'errore e mostra una finestra di messaggio che descrive o indica l'errore.

Codice:

 Sub onError_Go_to_0 () On Error GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Valore = 100 / "PETER" End Sub 

Di solito, mostra il comportamento di controllo degli errori predefinito, è significativo quando viene utilizzato insieme a "On Error Resume Next".

Di solito, è possibile osservare la finestra del messaggio di errore di runtime, contenente le opzioni "Continua", "Fine", "Debug" e "Guida" . diamo un'occhiata agli usi di ciascuno di essi.

  • L' opzione Continua ignorerà l'eccezione e continuerà il codice se è possibile.
  • L' opzione end termina il programma.
  • L' opzione Debug evidenzierà la dichiarazione in cui si è verificato l'errore. che ti aiuta a eseguire il debug o correggere il codice.
  • L' opzione Guida ti porterà ad aprire la pagina di aiuto di Microsoft MSDN.

On Error Vai a 0 con On Error Riprendi Successivo

Codice:

 Sub onError_Go_to_0_with_Resume_next () In errore Riprendi Kill successivo "C: TempFile.exe" In errore Vai a intervallo 0 ("A1"). Valore = 100 / "PETER" End Sub 

Nel codice sopra, ignorerà gli errori fino a raggiungere l'istruzione On Error GoTo 0. Dopo l'istruzione On Error GoTo 0, il codice torna indietro o passa al normale controllo degli errori e attiva l'errore previsto. quando eseguo il codice sopra, mostrerà l'errore di divisione, cioè digita mancata corrispondenza (il valore numerico non può essere diviso per il testo).

On Error GoTo 0 disabilita qualsiasi trapping di errori attualmente presente nel codice VBA, ovvero disattiva la gestione degli errori nel codice principale, mentre On Error GoTo -1 cancella la gestione degli errori e non imposta nulla che aiuta o consente di creare un'altra trap di errori.

3. In caso di errore, vai a <ETICHETTA

VBA per trasferire il controllo del programma sulla linea seguita dall'etichetta se si verificano errori di runtime, ad esempio il codice salta all'etichetta specificata. Qui, le istruzioni di codice tra la riga di eccezione e l'etichetta non verranno eseguite.

Questo metodo è più adatto e significativo per uscire con garbo dal programma se si verifica un grave errore fatale durante l'esecuzione.

Nel codice VBA sotto indicato non appena si verifica l'errore alla riga 3, il programma trasferisce il controllo all'etichetta della riga 6 ie (il messaggio popup appare come "Gestore eccezioni" ).

Codice:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Questa riga non verrà eseguita" Esci Sub Error_handler: MsgBox "gestore eccezioni" End Sub 

Qui puoi notare che 'Exit Sub' dovrebbe essere usato poco prima dell'etichetta 'Error_handler:', questo per garantire che il blocco di codice del gestore Error si fermi o non venga eseguito se non ci sono errori. Ora puoi salvare la cartella di lavoro come "cartella di lavoro abilitata per le macro di Excel". Facendo clic su Salva come nell'angolo sinistro del foglio di lavoro.

Ancora una volta se si apre un file, è possibile fare clic sul tasto di scelta rapida, ad esempio Fn + Alt + f8, viene visualizzata la finestra di dialogo "Macro", in cui è possibile eseguire un codice macro salvato di propria scelta oppure è possibile fare clic su Fn + Alt + F11 per una finestra macro completa.

Cose da ricordare

  • Prima di scrivere il codice, è necessario assicurarsi che, l' interruzione degli errori non gestiti sia selezionata o selezionata per errore. opzione di trapping in generale nelle opzioni dello strumento della barra degli strumenti VBA.
  • È un'impostazione predefinita che aiuta a fermare il codice per errori che non vengono gestiti.
  • Interrompi su tutti gli errori: interromperà il codice su tutti i tipi di errori.
  • Modulo di classe di intrusione: nel caso in cui nel codice venga utilizzato un oggetto come un modulo utente, verrà evidenziato che la riga esatta causa l'errore.

Articoli consigliati

Questa è una guida alla gestione degli errori VBA. Qui discutiamo come utilizzare la gestione degli errori VBA in Excel insieme ad alcuni esempi pratici e modello Excel scaricabile. Puoi anche consultare i nostri altri articoli suggeriti:

  1. VBA Declare Array (esempi)
  2. VBA in errore
  3. VBA Unprotect Sheet
  4. Colonne VBA | Modelli di Excel
  5. VBA Environ

Categoria: