Visual Basic Editor(VBE)のデバッグ【Access/Excel】

【アイキャッチ】VBEの操作 09.Visual Basic Editor(VBE)の操作とデバッグ

プログラムを開発するうえで、エラーは避けて通れません。エラーの種類は主に下記3種類あります。

  • コンパイルエラー:構文や文法に誤りがあり、コードの実行ができないエラー。
  • 実行時エラー:コード実行時に処理が継続できなくなり発生するエラー。
  • 論理エラー:プログラムが目的通りの動作を行わないエラー。

デバッグとはこのようなエラーを取り除くため、コードを調べ、ミスを修正する作業です。

プロシージャの強制終了

エラーのためにプロシージャが終了できない等、プロシージャの実行を強制的に終了させたいケースがあります。このよな場合は下記方法で強制終了させることが可能です。
①[Ctrl]+[Break]キーを押下するとプロシージャを中断します。

Visual Basic Editor(VBE)のデバッグ1


②「リセット」ボタン(停止)をクリックし強制終了します。

[Break]キーについて
[Break]キーはPCによってはない場合があります。キーの組み合わせで[Break]キーを再現しますので各PCで確認をお願いします。個人的には下記ブログを確認し[Break]キーを入力することができました。
ノートパソコンで「Pause/Break」キーがない場合の対処法 | 時短の時間 (jnoj.info)

DoEvens関数について
Windowsに制御を渡します。Test1プロシージャでDoEvents関数がない場合は[Ctrl]+[Break]キーが効かないため、あえて入れています。多用するとプロシージャが遅くなりますがループ等で使用するとアプリケーションが応答なしになることを防ぐことができます。例えばループ中100回に1回DoEvetnsを実行する等状況に応じた対応が必要になります。ちなみに100回に1回DoEventsを実行するには、下記のようなイメージでコードを書きます。

Sub Test10()
    Dim i As Long
    
    Do
        i = i + 1
        If i Mod 100 = 0 Then
            DoEvents
        End If
    Loop

End Sub

実行中のプロシージャを中断する

[Ctrl]+[Break]キーで強制終了またはデバッグできますが、この方法以外にあらかじめプロシージャに中断の設定をすることが可能です。

ブレークポイント

コードウィンドウの余白インジゲータをクリックするか[F9]キーを押下することで、ブレークポイントが設定され、プロシージャの任意の行で中断することができます。もう一度ブレークポイントをクリックするか[F9]ボタンを押下することで解除ができます。

Visual Basic Editor(VBE)のデバッグ2

ブレークポイントは空白行や宣言文(Dim)では使用できません。

Stopステートメント

コード内にStopステートメントを記述することでプロシージャを中断することができます。ブレークポイントとは違い、その設定を保存することが可能です。デバッグ中にアプリケーションが終了する等があればStopステートメントは使用しデバッグします。

Visual Basic Editor(VBE)のデバッグ3
アプリケーションが終了することをStopで回避しています。

ステップイン実行

プロシージャのステートメントを1行単位で実行します。ステップインを実行する場合は、「デバッグ」ツールバーの「ステップイン」ボタンをクリックするか、[F8]キーを押下します。ステップイン実行はプロシージャの最初から行う場合とブレークポイントから行う場合があります。

ローカルウィンドウの利用

ローカルウィンドウは「表示」メニュー・「ローカルウィンドウ」で表示します。
ローカルウィンドプはブレークポイントで中断しているときプロシージャの変数の内容を表示します。

4
プロシージャ中断中にローカルウィンドウで各変数を表示します。

ウォッチウィンドウの利用

ウォッチウィンドウは「表示」メニュー・「ウォッチウィンドウ」で表示します。
ウォッチウィンドウはウォッチ式に条件を入力することによって変数を確認したりプロシージャを中断したりできます。

Visual Basic Editor(VBE)のデバッグ5
ウォッチウィンドウで右クリックし「ウォッチ式の追加」をクリックします。
Visual Basic Editor(VBE)のデバッグ6
ここではモジュール「Modulele1」プロシージャ「Test4」で変数「i」が3になったら中断する設定をします。
Visual Basic Editor(VBE)のデバッグ7
Test4を実行しました。i=3になったら中断されました。

イミディエイトウィンドの利用

イミディエイトウィンドを利用すると効率的なデバッグが可能になります。実行中のプロシージャの変数等の出力・関数の結果等の事前確認・プロシージャ中断中の変数等の確認等ができます。

Debug.Print

Debug.PrintのPrintメソッドを使用すると、イミディエイトウィンドウに変数の値や、関数の結果を出力させることができます。

Visual Basic Editor(VBE)のデバッグ8

演算の実行

イミディエイトウィンドウでは、演算の結果を表示したり関数を実行させることができます。実行する際は「?」に続けて式を記入し[Enter]キー押下で結果が表示されます。
例えば下記のような内容です。
  入力:?2*3[Enter]  結果:6
  入力:?format(1234,”#,###”)[Enter] 結果:1,234

Visual Basic Editor(VBE)のデバッグ9

プロシージャの呼び出し

プロシージャ名を入力することでプロシージャを実行できます・。

Visual Basic Editor(VBE)のデバッグ10
イミディエイトウィンドウで「test4」[Enter]キーを入力すると、プロシージャ「Test4」が実行されます。

プロシージャの中断時に使用する

プロシージャの実行を中断したとき、イミディエイトウィンドウを使って変数の値等をを確認することができます。

Visual Basic Editor(VBE)のデバッグ11
変数「i」にマウスを近づけると変数「i」の値が表示jされます。
Visual Basic Editor(VBE)のデバッグ12
イミディエイトウィンドウで「?i」と入力すると変数「i」の値が表示されます。

コメント

タイトルとURLをコピーしました