例文を使って繰り返し業務を時短

【マクロ・VBA】ESCを記入してマクロを停止(エラー処理)できるようにする 

エクセル、マクロ、VBAでエラーを回避する方法 VBA

時間がかかる処理をする場合、途中で停止できるようにしておくと便利です。

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 0

2.On Error GoToステートメントを使用する
On Error GoToステートメントを使用することで、エラーが発生した場合に、指定したエラー処理ルーチンにジャンプして処理を続行することができます。以下は例です。

On Error GoTo ErrorHandler
'エラーが発生する可能性のある処理
Exit Sub

ErrorHandler:
    'エラー処理
    Resume Next

3.If...Then...Elseステートメントを使用する
If...Then...Elseステートメントを使用して、エラーが発生した場合に、処理をスキップすることができます。以下は例です。

If IsError(someVariable) Then
    'エラー処理
Else
    '正常な処理
End If

4.IsNumeric関数を使用する
IsNumeric関数を使用して、数値以外の値が入力された場合に、エラーを回避することができます。以下は例です。

If IsNumeric(someVariable) Then
    '数値の場合の処理
Else
    '数値以外の場合の処理
End If

5.If...Then...ElseIfステートメントを使用する
If...Then...ElseIfステートメントを使用して、複数の条件を指定してエラーを回避することができます。以下は例です。

If someVariable = 0 Then
    'someVariableが0の場合の処理
ElseIf someVariable < 0 Then
    'someVariableが負の場合の処理
Else
    'someVariableが正の場合の処理
End If

以上のように、VBAでは、様々な方法でエラーを回避することができます。ただし、エラーを無視する場合は、プログラムの動作に影響を与える可能性があるため、注意が必要です。また、可能な限りエラーを回避するようにプログラムを設計することが望ましいです。

コメント

タイトルとURLをコピーしました