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 = xlDoubleEnd With