Sub Sample()
Dim i As Long, j As Integer
Application.EnableCancelKey = xlErrorHandler
On Error GoTo MyError
For i = 1 To 33000
Range("A1") = i
j = i
Next i
Exit Sub
MyError:
If Err.Number = 18 Then
If MsgBox("マクロを終了しますか?", 292) = vbNo Then
DoEvents
Resume
End If
Else
MsgBox "予期しないエラーが発生しました" & vbCrLf & _
Err.Description, vbCritical
End If
End Sub
For Nextステートメント内で「j = i」としています。これは単に「変数 i の数値を変数 j に代入せよ」という意味ですが、変数 i はLong型、変数 j はInteger型で宣言しています。Integer型は32767までしか代入できませんから、i が32768になるとエラーが発生します。これは、同じエラートラップで「Escキーによるエラー」と「その他のエラー」を判別するためのサンプルです。