VBAでエラー処理を行い、エラー後も処理を続行する方法

Visual Basic

VBA初心者向けに、Excel VBAでエラー処理を行い、特定のエラーが発生した場合に処理をスキップして次に進む方法を紹介します。この方法を使うと、エラーが発生してもプログラムの実行を続けられ、後続の処理に影響を与えません。

1. エラー処理の基本

VBAでエラーを処理する際には、主に「On Error」ステートメントを使用します。これにより、エラーが発生したときに特定の処理を実行したり、エラーメッセージを表示したり、プログラムの実行をスキップすることができます。

2. エラーが発生した場合に処理を飛ばす方法

質問のコードでは、指定したセル範囲に値が見つからない場合にエラーが発生します。この場合、エラーを無視して次の処理に進むために、エラー処理を追加します。

Sub メルカリ更新csv転送()    Range("a13").Activate    For i = 1 To 520        Dim code As String, name As String, rkakaku As Integer, setumei As String, jan As String, g1 As String, g2 As String, g3 As String, g4 As String, g5 As String, g6 As String, g7 As String, g8 As String, g9 As String        code = ActiveCell.Value        name = ActiveCell.Offset(0, 4).Value        rkakaku = ActiveCell.Offset(0, 14).Value        setumei = ActiveCell.Offset(0, 16).Value        jan = ActiveCell.Offset(0, 25).Value        g1 = ActiveCell.Offset(0, 26).Value        g2 = ActiveCell.Offset(0, 27).Value        g3 = ActiveCell.Offset(0, 28).Value        g4 = ActiveCell.Offset(0, 29).Value        g5 = ActiveCell.Offset(0, 30).Value        g6 = ActiveCell.Offset(0, 31).Value        g7 = ActiveCell.Offset(0, 32).Value        g8 = ActiveCell.Offset(0, 33).Value        g9 = ActiveCell.Offset(0, 34).Value        Sheets("メルカリ更新csv").Activate        Range("ao10").Activate        ActiveCell.Value = code        ' エラー発生時の処理        On Error Resume Next        Range("bs13:bs9000").Find(What:=Range("ao10").Value, LookAt:=xlWhole).Activate        If Err.Number <> 0 Then            Err.Clear            ' エラー発生時の処理    End If        ActiveCell.Offset(0, 1).Value = jan        ActiveCell.Offset(0, 75).Value = rkakaku        ActiveCell.Offset(0, -7).Value = setumei        ActiveCell.Offset(0, -8).Value = name        ActiveCell.Offset(0, -68).Value = g1        ActiveCell.Offset(0, -65).Value = g2        ActiveCell.Offset(0, -62).Value = g3        ActiveCell.Offset(0, -59).Value = g4        Sheets("CSV作成").Activate        ActiveCell.Offset(1, 0).Activate    Next i    Sheets("メルカリ更新csv").ActivateEnd Sub

3. コードの解説

このコードでは、次のポイントを押さえています。

  • On Error Resume Next – エラー発生時に次の行に進むようにします。これにより、エラーが発生してもプログラムは終了せず、処理が続行されます。
  • Err.Number – エラー番号をチェックします。エラーが発生した場合、Err.Numberは0以外の値になります。
  • Err.Clear – エラーをクリアします。エラー処理後にエラー状態をリセットします。

4. エラー処理を行うメリット

VBAでエラー処理を追加することで、プログラムの安定性が向上します。例えば、データが見つからない場合や不正な入力があった場合でも、プログラムが強制終了することなく処理を続けることができます。

5. まとめ

エラー処理を使って、VBAプログラムの安定性を向上させる方法について説明しました。エラーが発生した場合に適切に処理を行い、プログラムが終了せずに次の処理に進むようにすることで、効率的な運用が可能になります。

コメント

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