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
サンプルコード実行結果