Molte volte capita che in un programma si generi un errore, che può essere generato da input sbagliati da parte dell'utente che utilizza il programma ecc...
I programmatori alle prime armi, utilizzerebberò una quantità inimmaginabile di if =).
Ma c'è  una sintassi che permette di gestire qualunque errore si possa generare in un programma, in modo generale, senza quindi complicarsi troppo.
Questa è la sintassi per gestire un errore:

Private Sub Esempio()
On Error GoTo oppure Resume Next
End Sub

On Error è l'evento di errore, ovvero, ogni volta che si verifica un errore (nell'istanza in cui è contenuto il codice).
GoTo è il comando che indica di saltare all'etichetta, ovvero quando si verifica un errore, con GoTo si salta tutto il codice fino a quando non si raggiunge l'etichetta indicata, ed l'esecuzione del codice riprende da lì.
Questa è la sintassi per usare GoTo:

Private Sub Esempio()
On Error GoTo errore 'ad ogni errore, salta all'etichetta errore
...
...
...
errore: 'questa è l'etichetta errore
...
End Sub

Resume Next invece indica al programma, che ogni errore deve essere ignorato e che l'esecuzione del codice passa alla riga successiva a quella in cui si è causato l'errore.
Questa è la sintassi per usare Resume Next:

Private Sub Esempio()
On Error Resume Next
...
...
End Sub

Per ottenere informazioni sull'errori che si generano, c'è l'oggetto Err.
Ogni volta che si verifica un errore nell'esecuzione del programma, nell'oggetto Err vengono "segnalate" le informazioni riguardanti l'errore.
Questo oggetto ha diverse proprietà ed alcune di queste sono:

La descrizione dell'errore (Err.Description), che ha un valore string.
Il numero dell'errore (Err.Number), che ha un valore integer.
La sorgente dell'errore (Err.Source), che ha un valore string.

Questo oggetto può essere usato per esempio in questo modo:

Private Sub Esempio()
On Error GoTo errore
...
...
...
Exit Sub 'esce dall'esecuzione dell'istanza,
         'senno il codice successivo sarebbe
         'stato eseguito ;)
errore:
MsgBox "errore numero: " & CStr(Err.Number) 'CStr serve a convertire
             'un valore in stringa ;)
MsgBox "descrizione: " & Err.Description
MsgBox "sorgente dell'errore: " & Err.Source
End Sub

Spero di essere stato di aiuto, ciao e buone feste =)