Sub Sample2()
Dim i As Long, buf As String
On Error Resume Next
For i = 1 To 3
buf = buf & Worksheets("Sheet" & i).Name & vbCrLf
Next i
MsgBox buf
End Sub
Sub Sample3()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1 ''ここでエラーが発生すると
Line Input #1, buf
Range("A1") = buf
Close #1
Exit Sub
myError: ''この行にジャンプします
MsgBox "ファイルを開けません", vbExclamation
End Sub
ラベルは、行頭から任意の文字列(《ラベル名》)を書き、行末にコロン「:」をつけます。
注意しなければならないのは、エラーが発生しなかった場合を想定することです。もしエラーが発生せず、コードの上から順に処理が行われたなら、最後の MsgBox が毎回実行されてしまいます。そこで、エラーが発生しない(ラベルにジャンプしない)ときは、ラベルの手前に Exit Sub と「Subプロシージャを終了させる」コマンドを忘れずに記述します。
※エラーが発生した場合
Sub Sample3()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1 ''ここでエラーが発生してmyErrorにジャンプする
Line Input #1, buf
Range("A1") = buf
Close #1
Exit Sub
myError:
MsgBox "ファイルを開けません", vbExclamation
End Sub ''ここで終了する
※エラーが発生しない場合
Sub Sample3()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1
Line Input #1, buf
Range("A1") = buf
Close #1
Exit Sub ''ここで終了する
myError:
MsgBox "ファイルを開けません", vbExclamation
End Sub
Sub Sample4()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1
Line Input #1, buf
Range("A1") = buf
Close #1
Worksheets("Sheet2").Name = "合計" ''追加した処理(ここでエラーになる)
Exit Sub
myError:
MsgBox "ファイルを開けません", vbExclamation
End Sub
Sub Sample3()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1 ''ここでエラーが発生すると
Line Input #1, buf
Range("A1") = buf
Close #1
Exit Sub
myError: ''この行にジャンプします
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラーの種類:" & Err.Description, vbExclamation
End Sub
Sub Sample4()
Dim buf As String
On Error Resume Next
Open "C:\Sample.dat" For Input As #1
Line Input #1, buf
Range("A1") = buf
Close #1
If Err.Number <> 0 Then
MsgBox "エラーが発生しました" & vbCrLf & _
Err.Description, vbExclamation
End If
Worksheets("Sheet2").Name = "合計"
End Sub
Sub Sample4()
Dim buf As String
On Error Resume Next
Open "C:\Sample.dat" For Input As #1 ''ここでエラー
Line Input #1, buf
Range("A1") = buf
Close #1
If Err.Number <> 0 Then
MsgBox "エラーが発生しました" & vbCrLf & _
Err.Description, vbExclamation
End If
Worksheets("Sheet2").Name = "合計" ''ここは正常
If Err.Number <> 0 Then
MsgBox "シート名を変更できませんでした" & vbCrLf & _
Err.Description, vbExclamation
End If
End Sub
Sub Sample4()
Dim buf As String
On Error Resume Next
Open "C:\Sample.dat" For Input As #1 ''ここでエラー
Line Input #1, buf
Range("A1") = buf
Close #1
If Err.Number <> 0 Then
MsgBox "エラーが発生しました" & vbCrLf & _
Err.Description, vbExclamation
End If
Err.Clear
Worksheets("Sheet2").Name = "合計" ''ここは正常
If Err.Number <> 0 Then
MsgBox "シート名を変更できませんでした" & vbCrLf & _
Err.Description, vbExclamation
End If
End Sub
Sub Sample4()
Dim buf As String
On Error GoTo myError
Open "C:\Sample.dat" For Input As #1
Line Input #1, buf
Range("A1") = buf
Close #1
Worksheets("Sheet2").Name = "合計"
Exit Sub
myError:
Select Case Err.Number
Case 9
MsgBox "シート名を変更できませんでした" & vbCrLf & Err.Description, vbExclamation
Case 53
MsgBox "ファイルを開けませんでした" & vbCrLf & Err.Description, vbExclamation
Case Else
MsgBox "予期せぬエラーが発生しました", vbExclamation
End Select
End Sub