前画面へ戻る

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


お土産 Macro3.zip
前画面へ戻る