【Excel VBA】エラーを強制的に発生させる方法(Raiseメソッド)

りゅう
こんにちは!りゅう(@ryupong_b)です。
今回は、「エラーを強制的に発生させる方法」について解説していきます。
はじめに

今回は、エラーを強制的に発生させる方法について解説します。
他のプログラミング言語では、「throw」に該当します。

この記事を読むメリット
  • エラーを強制的に発生させる方法の詳細を解説します。
  • ユーザ定義のエラー番号やメッセージなどの設定方法についても解説します。

使用例

サンプルコードを交えて解説いたします。

サンプルコード

以下のサンプルでは、セルに”NG”と入力されていた場合にエラーを発生させるソースコードです。
エラー番号は1000を設定し、エラー内容は「処理結果NGです」という文字列を設定しています。
エラーが発生した場合、ErrHandleラベルに遷移しメッセージボックスを表示します。

サンプルコード
Public Sub raiseError()
    On Error GoTo ErrHandle

    If ThisWorkbook.Worksheets("Sheet1").Range("B1").Value = "NG" Then

        ' [Sheet1] B1セルに "NG"が入力されていた場合 エラーを生成
        Err.Raise Number:=1000, Description:="処理結果NGです"
    End If

    Exit Sub
ErrHandle:

    ' メッセージボックスにエラーを表示
    MsgBox "Number:" & Err.Number & vbCrLf & _
        "Description:" & Err.Description, vbCritical
End Sub

実行結果

実行前

実行後

詳細解説

構文や注意点などについて解説します。

構文

構文

ErrorObject.Raise number, description

引数

# 引数 必須 詳細
1 number エラー番号を指定します。
指定可能な範囲は 513 ~ 65535です。
2 description エラー内容を指定します。
りゅう
エラー番号について、0 ~ 512についてはシステムエラー用に既に予約されている番号となります。
従って、513 ~ 65535の範囲での指定となります。

さいごに

いかがでしたでしょうか。
予めエラーが想定されるコードに対しては、Raiseメソッドでユーザ定義のエラーを出力するようにしましょう。
エラー番号と対応策を記載したマニュアルを用意すると、ツール運用が楽になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA