Visual Basic for Applications:
Gestione degli errori

Come fare:

In VBA, la gestione degli errori è tipicamente implementata usando l’istruzione On Error che istruisce VBA su come procedere quando si verifica un errore. Le strategie di gestione degli errori più comuni coinvolgono l’On Error GoTo etichetta, On Error Resume Next e On Error GoTo 0.

Esempio 1: Utilizzo di On Error GoTo

Questo approccio consente di indirizzare il programma a una specifica sezione di codice, etichettata immediatamente dopo l’incontro con un errore.

Sub ErrorHandlerExample()
    On Error GoTo ErrHandler
    Dim intDivision As Integer

    intDivision = 5 / 0 ' Questo causerà un errore di divisione per zero

    Exit Sub
ErrHandler:
    MsgBox "Si è verificato un errore: " & Err.Description, vbCritical, "Errore!"
    Resume Next
End Sub

In questo esempio, qualsiasi errore di runtime attiverà il salto a ErrHandler, visualizzando un messaggio di errore e poi proseguendo con la linea successiva dopo l’errore.

Esempio 2: Utilizzo di On Error Resume Next

Questa strategia istruisce VBA a continuare l’esecuzione della riga di codice successiva anche se si verifica un errore, il che può essere utile per errori ritenuti innocui o quando si prevede di gestire l’errore più avanti nell’esecuzione.

Sub ResumeNextExample()
    On Error Resume Next
    Dim intDivision As Integer
    intDivision = 5 / 0 ' Questo non fermerà il programma; l'errore è ignorato
    
    ' Verifica se si è verificato un errore
    If Err.Number <> 0 Then
        MsgBox "Si è verificato un errore: " & Err.Description, vbExclamation, "Errore Gestito"
        ' Reimposta l'errore
        Err.Clear
    End If
End Sub

In questo caso, il programma non si interrompe sull’errore; verifica se si è verificato un errore, lo gestisce se è così, e poi cancella l’errore.

Approfondimento

Storicamente, la gestione degli errori nei linguaggi di programmazione è evoluta da semplici istruzioni goto a meccanismi più sofisticati come le eccezioni in linguaggi come Java e C#. La gestione degli errori in VBA, pur non essendo potente o flessibile come la moderna gestione delle eccezioni, serve al suo scopo nel contesto dell’applicazione del linguaggio nell’automazione dei compiti negli ambienti di Microsoft Office.

La limitazione principale della gestione degli errori in VBA risiede nel suo approccio alquanto ingombrante e manuale, richiedendo un’attenta collocazione del codice di gestione degli errori e una chiara comprensione del flusso di esecuzione. I linguaggi di programmazione moderni offrono tipicamente soluzioni più eleganti, come i blocchi try-catch, che gestiscono automaticamente il flusso al codice di gestione degli errori senza la necessità di controlli manuali o salti nell’esecuzione del codice.

Nonostante queste limitazioni, i meccanismi di gestione degli errori di VBA sono adatti per la maggior parte dei compiti di automazione e, se usati correttamente, possono ridurre significativamente la probabilità che errori non gestiti causino problemi agli utenti. Inoltre, comprendere la gestione degli errori di VBA può fornire spunti sui vecchi paradigmi di programmazione e sull’evoluzione delle strategie di gestione degli errori nello sviluppo del software.