【VBA】独自設定のエラーを発生させる

エクセルVBAで使用するコードの備忘録。VBAで独自に設定したエラーを発生させるコード。

スポンサーリンク

Errオブジェクト

VBAの処理中に不適切な処理が発生したことをユーザーに知らせるため(あるいはデバッグするため)に独自で設定したエラーを発生させたくなる時があります。このような場合に独自のエラーを発生させるにはErrオブジェクトのRaiseメソッドを使用します。引数は下記にご紹介するほかにもいろいろとありますが、ほとんど使うことはないと思います。

使用に際してはとりあえず、

  • Number: エラーの性質を識別する番号
  • Description: エラーの説明文字列

の二つを設定しておきましょう。

なお、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

'--- 独自設定のエラーを発生させる ---'
Call Err.Raise(Number:=vbObjectError + [エラー番号], Description:="[エラーの説明]")

Numberを設定する際には、vbObjectErrorという定数に対してエラー番号を加える形で行っています。これは、システムですでに定義されているエラー定数と独自設定のエラー定数の識別番号が重複しないようにするための措置でMiscosoftから推奨されているものです。

サンプルコード

下記のサンプルコードでは、セルの値が数字でない場合にユーザー定義のエラーを発生させています(この程度であればユーザー定義のエラーを発生させる必要はありませんが、簡単な参考例としてご覧ください)。

Public Sub ErrorRaise()
    
    '--- ワークシート ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[シート番号]")
    
    '--- エラーを判定するセルのアドレス(A1のような文字列) ---'
    Dim cellAddress As String
    cellAddress = "[アドレス文字列]"

    '--- 独自設定のエラーを発生させる ---'
    If (IsNumeric(ws.Range(cellAddress).Value)) Then
    
    Else
        Call Err.Raise(Number:=vbObjectError + [エラー番号], Description:="[エラーの説明]")
    End If

End Sub