Il sistema di gestione degli errori consente ad una macro di gestire errori di run-time e gestire operazioni o messaggi per l'utente. Un errore di run-time potrebbe essere una divisione per zero non prevista, la mancanza di un foglio o di un file, un valore inserito errato dall'utente, ecc.
Per prima cosa un breve riassunto dei metododi e oggetti per le gestione degli errori per chi ha già dimestichezza con i concetti.
| Funzione/oggetto | Descrizione |
|---|
| On Error Resume Next | Ignora l'errore e prosegue |
| On Error Goto Etichetta | In caso di errore viene eseguito il codice dopo Etichetta: |
| On Error Goto 0 | Riattiva la normale gestione degli errori (finestra debug) |
| On Error Goto -1 | Azzera la gestione degli errori |
|
| Resume | L'esecuzione riprende dalla stessa posizione che ha generato l'errore |
| Resume Next | L'esecuzione riprende dalla riga successiva a quella che ha generato l'errore |
| Resume Etichetta | L'esecuzione riprende dalla riga dopo Etichetta: |
|
| Err | Oggetto che contiene il dettaglio delle informazioni quando viene generato un errore |
| Err.Number | Il numero dell'errore |
| Err.Description | La descrizione dell'errore |
|
On Error GoTo
On Error Resume Next
Consente di proseguire l'esecuzione malgrado l'errore con l'istruzione immediatamente successiva a quella che ha generato l'errore; questo consente di inserire la gestione dell'errore direttamente nel codice invece di trasferire il controllo ad altro punto della routine.
E' possibile verificare se l'oggetto è stato assegnato oppure se Err.Number è diverso da 0; nell'esempio qui stotto viene verificato se è stato possibile creare l'oggetto Outlook prima di inviare la mail.
Oggetto Err
Quando viene generato un errore nell'oggetto Err vengono memorizzate le informazioni del codice e descrizione dell'errore.
Alcuni degli errori di run-time più comuni:
| Codice | Errore |
|---|
| 6 | Overflow |
| 9 | Indice non incluso nell'intervallo |
| 11 | Divisione per zero |
| 13 | Tipo non corrispondente |
| 53 | Impossibile trovare il file |
| 68 | Periferica non disponibile (drive non esistente) |
| 75 | Errore di accesso al percorso/file |
| 76 | Impossibile trovare il percorso |
| 91 | Variabile oggetto o variabile del blocco With non impostata |
| 424 | Necessario oggetto |
| 1024 | Errore definito dall'applicazione o dall'oggetto |
|