たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_エラー対処その1【コンパイルエラー/実行時エラー/論理エラー】エラーの種類

VBAでコーディングを行った際に発生するエラーの種類とエラー発生時の様子について

エラーの種類

エラーの種類は主に以下の3つに分けられる、それぞれの項で詳しく解説する
1:コンパイルエラー
2:実行時エラー
3:論理エラー

コンパイルエラー

文法や構文の誤りによっておこるエラー

コーディング中に発生した場合…
 ∟自動構文チェックにより誤った個所の行が赤くなる
実行時に発生した場合…
 ∟メッセージボックスが表示され、OKボタンを押すとプロシージャの実行が一時停止する

実行時エラー

構文自体には問題がないが、処理を継続することが困難になった場合に発生するエラー
例えば…変数に定義したデータ型と格納した値のデータ型が異なる等の場合に発生

実行時エラーが発生した場合…
 ∟メッセージボックスが表示され、OKボタンを押すとプロシージャの実行が終了する

論理エラー

コンパイルエラーでも実行時エラーでもないがプログラムが正しく動作しない

実行時エラーが発生した場合…
 ∟なにも起きないので、デバッグを行うことが必要



エラー処理ステートメント

エラー処理を行うステートメントを使用し、予めエラーが起きたときに備えた処理を記述しておく

用語

エラー処理:前もってエラーが起きた場合の処理をプログラムに組み込んでおくこと
エラートラップ:前もってエラーに対処しておくこと
エラー処理ルーチン:行ラベルの後に記述した処理を指す

On Error Gotoステートメント

エラートラップを記述するステートメント
記述部より後の部分でエラーが発生した場合には、行ラベルの場所に移動し行ラベル以降に記述した処理を実行

On Error Resume Nextステートメント

記述部より後~解除されるまでの間の部分については、発生したエラーを無視して処理を継続する
解除するには、On Error Goto 0ステートメントまたは別のOn Error Gotoステートメントを記述

On Error Goto 0ステートメント

設置しておいたエラートラップを無効化する

記事「エラー対処その2」にて、Resumeステートメントを使用した実際の記述例を紹介する