エラーへの対応-ExcelVBA

投稿者: | 2018年9月11日

エラー処理

マクロで発生するエラーを大別すると、次の2種類に分類できる。

  1. 文法エラー
  2. 論理エラー

文法エラー

文法エラーは記述エラーとも呼ばれる。VBAの構文に違反した書式で命令を記述したときに発生する。

論理エラー

VBAの文法的な誤りはないものの、論理的な矛盾によって発生するエラーである。

論理エラーはコンパイルエラー実行時エラーの2種類に分類できる。

エラーへの対応

エラーが発生したら別の処理にジャンプする

On Error ステートメントを使う。
On Error GoTo ジャンプ先のラベル名

ラベルとはマクロコード中に記述する「しおり」のような機能。
ラベル名の後ろにコロン(:)をつけて表す。
ラベル名:

サンプルコード

Sub Sample()
On Error GoTo myError
Workbooks.Open "XXXXX.xlsx"
MsgBox "ブックを開きました。"
myError:
MsgBox "エラーが発生しました。"
End Sub

上記のコードではエラーが発生しなかったときにもエラーメッセージを
表示してしまう。


Sub Sample()
On Error GoTo myError
Workbooks.Open "XXXXX.xlsx"
MsgBox "ブックを開きました。"
Exit Sub
myError:
MsgBox "エラーが発生しました。"
End Sub

「Exit Sub」を使って正常終了する場合は処理を抜けるようにする。

どんなエラーが発生したか調べる

On Errorステートメント

エラーが発生した時にエラー処理にジャンプできるが、
どんなエラーが発生したかがわからない。

発生したエラーに関する情報はErrオブジェクトに格納される。

■Errオブジェクトでよく使われるプロパティとメソッド
  • Numberプロパティ:エラーごとに決まっている「エラー番号」を返す。
  • Descriptionプロパティ:エラーの意味を表すメッセージ(文字列)を返す。
  • Clearメソッド:エラー情報をクリアする。

エラー番号とメッセージを取得して発生したエラーの種類を判定する。

発生したエラーを無視する

On Errorステートメントでは発生したエラーを無視することができる。
On Error Resume Next

エラー対策のポイント

  1. 事前にエラーとなりそうな処理を調べて対策を打っておく。
  2. エラーが発生した時の処理を記述する。(On Errorステートメント)

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA