Err Object

The Err object contains information about your run-time errors.
This object has global scope which means that it can be referenced/used from anywhere.
However the value/error information is only available inside the current procedure, when you leave that procedure the object is reset.
This object is automatically reset when execution moves to a different subroutine or function.
This object is automatically reset when any of the following statements are executed: "On Error", "Resume" or "Exit".

NumberThe error number. If this is zero then no error has occurred.
DescriptionA short description of the error
SourceThe project name from the Properties dialog box.
HelpContextThe context ID for a particular error in a help file.
HelpFileA folder location and filename of the help file.
LastDllErrorA system error code produced by a call to a DLL or external library (i.e. an API call)

Err.Clear Method

The clear method can be used explicitly to reset the properties, which is equivalent to "Err.Number = 0".


This method only needs to be used in conjunction with "On Error Resume Next" when you are performing more than one error check inside the same subroutine.

Public Sub MultipleRuntimeErrors_Resume() 
Dim iInteger As Integer
   On Error Resume Next
   iInteger = 40000

   If (Err.Number <> 0) Then
      Debug.Print "Overflow"
   End If

   Debug.Print 1 / 0

   If (Err.Number <> 0) Then
      Debug.Print "Division by Zero"
   End If
End Sub

Using "On Error Resume Next" is not recommended because there is a risk of catching the previously handled error.

Passing an ErrObject

It is possible to pass in an ErrObject into a subroutine.

Public Sub MySubroutine() 
   On Error GoTo ErrorHandler
   Debug.Print 1 / 0

   Call Error_Handle("MySubroutine", Err)
End Sub

Public Sub Error_Handle(ByVal sProcedureName As String, _
                        ByVal oErr As ErrObject)

   Call MsgBox("Number: " & Err.Number & vbNewLine & _
               "Description: " & Err.Description & vbNewLine & _
               "Source: " & Err.Source)
End Sub

© 2023 Better Solutions Limited. All Rights Reserved. © 2023 Better Solutions Limited TopPrevNext