時間がかかる処理をする場合、途中で停止できるようにしておくと便利です。
ApplicationオブジェクトのEnableCancelKeyプロパティにxlErrorHandlerを指定することにより、エラーを発生させて処理を中断することができます。
ESCを記入してマクロを停止(エラー処理)できるようにする
Sub ESCを押したらエラーを発生()
Dim i As Long, j As Integer
    
'ESCを押すとエラーを発生----
Application.EnableCancelKey = xlErrorHandler
On Error GoTo myError
'---------------------------
’処理を記入:
’エラーが発生したら下のmyErrorに移動
    
'エラー---------------------------
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その他、エラーを回避する方法
1.On Error Resume Nextステートメントを使用するOn Error Resume Nextステートメントを使用することで、エラーが発生した場合でも、エラーを無視して次の処理を続行することができます。ただし、この方法は、エラーを無視することになるため、注意が必要です。以下は例です。
On Error Resume Next
'エラーが発生する可能性のある処理
On Error GoTo 02.On Error GoToステートメントを使用するOn Error GoToステートメントを使用することで、エラーが発生した場合に、指定したエラー処理ルーチンにジャンプして処理を続行することができます。以下は例です。
On Error GoTo ErrorHandler
'エラーが発生する可能性のある処理
Exit Sub
ErrorHandler:
    'エラー処理
    Resume Next3.If...Then...Elseステートメントを使用するIf...Then...Elseステートメントを使用して、エラーが発生した場合に、処理をスキップすることができます。以下は例です。
If IsError(someVariable) Then
    'エラー処理
Else
    '正常な処理
End If4.IsNumeric関数を使用するIsNumeric関数を使用して、数値以外の値が入力された場合に、エラーを回避することができます。以下は例です。
If IsNumeric(someVariable) Then
    '数値の場合の処理
Else
    '数値以外の場合の処理
End If5.If...Then...ElseIfステートメントを使用するIf...Then...ElseIfステートメントを使用して、複数の条件を指定してエラーを回避することができます。以下は例です。
If someVariable = 0 Then
    'someVariableが0の場合の処理
ElseIf someVariable < 0 Then
    'someVariableが負の場合の処理
Else
    'someVariableが正の場合の処理
End If以上のように、VBAでは、様々な方法でエラーを回避することができます。ただし、エラーを無視する場合は、プログラムの動作に影響を与える可能性があるため、注意が必要です。また、可能な限りエラーを回避するようにプログラムを設計することが望ましいです。

 
  
  
  
  

コメント