sintassi:
.... codici che protrebbero dare erroreExit Sub
.... codici da eseguire se da erroreEnd Sub
Resume Next riprende ad eseguire il comando successivo a quello che ha generato l'errore
Resume etichetta va nella posizione della etichetta indicata
...
esempio: se il file test.xlsx é aperto allora chiudilo. Se il file é chiuso da errore ma in questo caso viene saltato il comando
On Error Resume Next
If Not Workbooks("test.xlsx") Is Nothing Then Workbooks("test.xlsx").Close
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
ActiveSheet.PasteSpecial Format:="Unicode Text", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
... comandi che possono dare erroriOn Error Goto 0 fine della verifica dell'errore
oggetto errore Err
quando si verifica un errore si crea un oggetto Err che ha alcune propietà unitili per l'analisi
esempio: analisi nel numero dell'errore
If Err.number = -2147467259 Then ...
problermi nei cicli, il comando di errore On Error non funziona e il codice va in Debug
senza un apparente motivo a volte il comando On Error non funziona nei cicli e il codice va in Debug
soluzione:
si inseriscono due etichette una a fine macro che fa poi tornare dentro il ciclo alla interazione successiva
For Each variabile In listaPROSSIMOCICLO: etichetta di rientro cicloOn Error GoTo ETICHETTA se errore va fuori macro
.... comandi che danno errore
Next variabile prossima interazione del cicloETICHETTA: etichetta fuori ciclo
Exit Sub
Resume PROSSIMOCICLO torna nel ciclo alla prossima interazione