小编Nac*_*rid的帖子

如果只能存在一个错误对象,那么声明 ErrObject 变量有什么用呢?

我们都知道 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)

error-handling vba ms-office

1
推荐指数
1
解决办法
440
查看次数

标签 统计

error-handling ×1

ms-office ×1

vba ×1