[VBA]On Error Goto 0をすると、Errオブジェクトが初期化される

On Error Goto 0すると、Errオブジェクトが初期化されるので、Err.Numberを取得したい場合はOn Error Goto 0をする前に取得しておく必要があります。

サンプルコード

Sub test()
    Dim pointer() As String
    Dim tmp As Integer
   
    Dim errNo1 As Integer
    Dim errNo2 As Integer
   
    On Error Resume Next
    temp = UBound(pointer, 3)       'エラー発生
   
    errNo1 = Err.Number
   
    On Error GoTo 0
    errNo2 = Err.Number
   
    MsgBox ("On Error Goto 0する前のErr.Number: " & errNo1 & vbCrLf & _
            "On Error Goto 0した後のErr.Number: " & errNo2)
End Sub

サンプルコード実行結果
実行結果

Posted in VBA

コメントを残す