ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

Excelマクロ覚書 ~エラー処理編~

図書館で借りてきた某書籍の覚書です。

 

 


【エラーが発生したときの処理を追加する】

想定外のことがあっても処理を続けたい場合は、On Error Resume Nextステートメントを使う。
On Error Resume Nextステートメントを使うことで、エラー発生時には直下の処理を無視して次の行の処理を行う。

On Error Resume Next

Dim Sum As Long
Dim i As Long

On Error Resume Next 'エラーが発生したら、Forステートメント以下を無視する'
For i = 4 To 15 Sum = Sum + Range("F" & i).Value Next MsgBox "合計額:" & Sum End If

指定した位置に処理を移す場合は、On Error GoToステートメントを使う。

On Error GoTo 行ラベル
      処理
   エラー発生箇所
    Exit Sub

行ラベル:
    エラー処理ルーチン

Dim Sum As Long
Dim i As Long

On Error GoTo ErrCd1 'エラーが発生したら、ErrCd1に処理を移す'
For i = 4 To 15 Sum = Sum + Range("F" & i).Value Next MsgBox "合計額:" & Sum Exit Sub

ErrCd1:
MsgBox "数値以外のデータが入力されています。処理を終了します。"

エラー発生時に、エラー内容に応じた処理を適用させる場合、Errプロパティを使う。
Numberプロパティでエラー番号を取得する。

Err.Number

Dim Sum As Long
Dim i As Long

On Error GoTo ErrCd1 'エラーが発生したら、ErrCd1に処理を移す'
For i = 4 To 15 Sum = Sum + Range("F" & i).Value Next MsgBox "合計額:" & Sum Exit Sub

ErrCd1

Select Case Err.Number
Case 11
Range("E" & i).Value = "0です。"
Case 13
Range("E" & i).Value = "数値を入力"
End Select
Resume Next

【コードを簡略化する】

処理をまとめる場合は、Withステートメントを使う。

With 対象
         .処理1
         .処理2
End With

With Range("A3:G3")
.Interior.Color = RGB(0, 255, 255)
          .Font.Name = "MS Pゴシック"
        .Font.Size = 14

        .Font.Bold = True
        .Font.Italic = True
        .Borders(xlEdgeBottom).LineStyle = xlDouble

End With