【Excel VBA入門】エラー処理|On Error GoTo

記述編

もはやマクロ作成でおなじみの「エラー発生」。

マクロを作成しているとどうしても思ったような動作ができずエラーを連発してしまうことってありますよね。

とくに共用ファイルで作成したマクロの場合、自分が意図していない操作を誰かにさせることもあります。
今回はそんなときの解決策をひとつご紹介します。

エラーの発生対策

エラーが発生したときに、任意の処理を実行させることができる「On Error GoTo」ステートメントをつかいます。

On Error GoTo (任意の値)
    (ここにコードを記述する)
Exit Sub
(任意の値) (エラーが発生したときの動作)

具体例をつかってご説明します。

このような一覧表で入力モレの確認をしたいときがあるとします。
入力していない箇所があれば、そこに色マーキングをつけて注意をうながしたいです。

このようなコードを準備しました。

範囲セルにたいして「SpecialCells(xlCellTypeBlanks)」をつかって「空白のセル」を指定しています。
この「空白セル」に色をつければいいですね。

Sub check()
    Range("C2:C4").SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(255, 0, 0)
End Sub

 

入力モレ(空白セル)があった場合がこちら。期待どおりに色がつきました。

しかし、入力モレ(空白セル)がなかった場合はこのようになります。

エラー画面がでてしまいましたね。
こうなってしまうと期待した動きでなくなってしまいます。

こういった場面で「On Error GoTo」をつかいます。
コードはこちらです。

Sub check2()
    On Error GoTo チェック
        Range("C2:C4").SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(255, 0, 0)
    Exit Sub
チェック:
    MsgBox Err.Description
End Sub

こちらが実行結果です。

「実行時エラー」ではなくメッセージ画面がでてきました。

4行目で「Exit Sub」と書いてあります。これは空白セルに色マーキングをした後、マクロを終了させるためです。「Exit Sub」がないと空白のエラー画面が表示されてしまいます。

Exit Sub」がない場合の実行結果はこちら。

まとめ

よく使うと思われるエラー対策をご紹介しました。

できればエラーが出ないコードを書くことが一番ですが、どうしても仕方がないときもあります。そんなときにはこのような方法でエラーに備えるのはいかがでしょうか。

タイトルとURLをコピーしました