前画面へ戻る
Sub Err()
'このマクロは、プログラム実行時に発生するエラー(スペルや文法上のエラーは除く)の処理方法をまとめてみました。
尚、プログラムの指示通りに入力していくと、最後にエラーとなるように設計されています。
Dim Inpt
Dim Err
Dim Atai As Integer
Dim i As Integer
'-----------シートデータ クリア--------
Cells.Select 'シート全体を選択
Selection.ClearContents 'データのクリア
Range("A1").Select
Range("E2").Value = "+"
Range("G2").Value = "="
Range("F2").Value = 1234
'-----------On Error ステートメント----------
'「On Error GoTo エラー処理部」 は、エラーが発生したらエラー処理ルーチェン(ここではErrSyori)にジャンプして、エラー処理を行い、再度エラーが発生したステートメントに戻る。
On Error GoTo ErrSyori 'エラーが発生したらErrSyoriへジャンプする
'入力用ダイアログを表示
Inpt = InputBox("D2セルに入れるデータを入力して下さい。" & _
Chr(10) & Chr(10) & "例えば文字を入力すると")
If Inpt = "" Then 'cancelボタンがクリックされたら
Inpt = "Cancel"
End If
Range("D2") = Inpt
Range("H2").Formula = "=RC[-2]+RC[-4]" '「D2+F2」の計算式入力
Atai = Range("H2")
MsgBox ("はい、良くできました。")
On Error GoTo 0 'エラー処理ルーチェンを無効にする
'「On Error Resume Next」は、エラーが発生してもプログラムを中断せず、エラーが発生したステートメントの次のステートメントから実行を継続します。
On Error Resume Next 'エラー無視
Inpt = InputBox("20文字程度の文字を入力して下さい")
If Inpt = "" Then
MsgBox ("おわり")
End
End If
MsgBox ("文字数は " & Len(Inpt) & "文字です")
'入力した文字数分、繰り返し
For i = 1 To Len(Inpt)
With ActiveSheet
'A列セル下方向に1文字ずつ入力
.Cells(5 + i, 1).Value = Mid(Inpt, i, 1)
End With
Next i
Atai = Range("A6") + Range("A7") 'ここでエラー(データ型が異なる)になるが、プログラムは中断しない。
MsgBox ("A6セル+A7セル=" & Atai) 'Ataiは"H2"セルの値が表示される
On Error GoTo 0 'エラー無視を解除
Atai = Range("A6") + Range("A7") 'ここでエラーになり、プログラムが中断する。
Exit Sub 'ここでSubプロシージャ−から抜けないと「エラー処理部」が実行されてしまう。
'------エラー処理部-----------
ErrSyori:
If Inpt = "Cancel" Then
MsgBox ("ズルはいけません(-_-;) ")
Else
MsgBox ("文字は計算でけまへん!!")
End If
Inpt = InputBox("今度は数字を入力しましょう")
Range("D2") = Inpt
Resume 'エラーが発生した行から処理を再開
End Sub
前画面へ戻る