エクセル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