我们都知道 VBA 中只能有一个错误对象。
在帮助同事处理错误以及为什么他不应该使用错误时,On Error Resume Next我有一个想法:
将错误对象存储在某处以便稍后引用它。
考虑这段测试代码:
Sub Test()
Dim t As ErrObject
On Error Resume Next
Err.Raise 1
Set t = Err
On Error GoTo 0
Debug.Print t.Number
On Error Resume Next
Err.Raise 1
Debug.Print t.Number
End Sub
Run Code Online (Sandbox Code Playgroud)
它将在立即窗口中打印 0,因为On Error GoTo 0重置错误对象,然后打印 1,因为它仍然保留对唯一错误对象的引用(?)。
如果我们创建一个新类并为其赋予一些与 ErrObject 相关的属性,如下所示:
(TestClass)
Option Explicit
Public oError As ErrObject
Private Sub Class_Initialize(): End Sub
Private Sub Class_Terminate()
If Not oError Is Nothing Then Set oError = Nothing
End …Run Code Online (Sandbox Code Playgroud)