When a user encounters an error in your program, he should be provided with a clear, precise description of the problem and resolution. The Err object provides VBA programmers with an accessible means of finding or triggering Microsoft Windows-specific errors.
Essentially the Err (short for error) object maintains information about errors that occur in the current procedure. This information is stored in the form of properties. The most common of the Err's properties follow:
• Description contains a description of the current error.
• Number contains the error number of the current error (0 to 65,535).
• Source contains the name of the object that generated the error.
Table 7.1 contains just a few of VBA's more common trappable error numbers and descriptions. For a complete list of error numbers and descriptions, consult Appendix C, "Trappable Errors," of this book.
Table 7.1 Common Error Numbers and Descriptions
Error Number Error Description
11 Division by 0
53 File Not Found
61 Disk Full
71 Disk Not Ready
76 Path Not Found
In the next program example, I use an error handler to check for division by 0.
Private Sub cmdDivide_Click()
On Error GoTo ErrorBin
MsgBox "Result is " & Val(txtOperandl.Value) _ / Val(txtOperand2.Value)
MsgBox "Error Number " & Err.Number & ", " & Err.Description
There may be times when an error occurs in your program that is similar to that of a given Err description, but does not trigger the specific Err number. The ability to trigger errors can be achieved through the Err object's Raise method.
The Raise method allows you to trigger a specific error condition, thus displaying a dialog box to the user. The Raise method takes a number as a parameter. For example, the following statement triggers a Disk Not Ready dialog box:
Besides providing descriptive error messages, error handling prevents many unwanted problems for your users. In other words, error handling may prevent your program from crashing. Users expect an error for division by 0, but they don't expect division by 0 to crash their applications.
Was this article helpful?