添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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".

Property Description
Number The error number. If this is zero then no error has occurred.
Description A short description of the error
Source The project name from the Properties dialog box.
HelpContext The context ID for a particular error in a help file.
HelpFile A folder location and filename of the help file.
LastDllError A 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".

Err.Clear 

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"
      Err.Clear
   End If

   Debug.Print 1 / 0

   If (Err.Number <> 0) Then
      Debug.Print "Division by Zero"
      Err.Clear
   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

ErrorHandler:
   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

© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited Top Prev Next