6.2. Error Handling in Procedures

Even while building as robust an application as possible, errors inevitably occur, and your application is expected to handle them elegantly. In this section, we examine how to use VB and VBA's error-handling features to do just that, first by examining error handling in subroutines and functions within standard modules (i.e., code modules and form modules that make up a standard EXE or a standard VBA program), and then by examining error handling in code or class modules that are used in an ActiveX DLL, EXE, or OCX project. The reason for making this distinction will become clear as you read through these sections.

To begin, let's look at a couple of templates you can use to add error handling to your procedures:

Private Sub Command1_Click()

    On Error GoTo Command1_Err

    Exit Sub

Command1_Err:
    MsgBox Err.Number & vbCrLf & Err.Description, _
           vbCritical, "Error!"
    
End Sub

This is error handling at its simplest; when an error occurs, an error message is displayed, and the routine in which the error occurred terminates. The second template is a variation on the same theme, but this time the Resume statement resumes program execution at the Command1_Exit label:

Private Sub Command1_Click()

    On Error GoTo Command1_Err
    
    ...
    
Command1_Exit:
    Exit Sub

Command1_Err:
    MsgBox Err.Number & vbCrLf & Err.Description, _
           vbCritical, "Error!"
    Resume Command1_Exit
End Sub

Finally, here is a slightly more sophisticated error-handling device that automatically reexecutes ...

Get VB & VBA in a Nutshell: The Language now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.