プログラムを開発するうえで、エラーは避けて通れません。エラーの種類は主に下記3種類あります。
- コンパイルエラー:構文や文法に誤りがあり、コードの実行ができないエラー。
- 実行時エラー:コード実行時に処理が継続できなくなり発生するエラー。
- 論理エラー:プログラムが目的通りの動作を行わないエラー。
デバッグとはこのようなエラーを取り除くため、コードを調べ、ミスを修正する作業です。
プロシージャの強制終了
エラーのためにプロシージャが終了できない等、プロシージャの実行を強制的に終了させたいケースがあります。このよな場合は下記方法で強制終了させることが可能です。
①[Ctrl]+[Break]キーを押下するとプロシージャを中断します。
②「リセット」ボタン(停止)をクリックし強制終了します。
[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]ボタンを押下することで解除ができます。
ブレークポイントは空白行や宣言文(Dim)では使用できません。
Stopステートメント
コード内にStopステートメントを記述することでプロシージャを中断することができます。ブレークポイントとは違い、その設定を保存することが可能です。デバッグ中にアプリケーションが終了する等があればStopステートメントは使用しデバッグします。
ステップイン実行
プロシージャのステートメントを1行単位で実行します。ステップインを実行する場合は、「デバッグ」ツールバーの「ステップイン」ボタンをクリックするか、[F8]キーを押下します。ステップイン実行はプロシージャの最初から行う場合とブレークポイントから行う場合があります。
ローカルウィンドウの利用
ローカルウィンドウは「表示」メニュー・「ローカルウィンドウ」で表示します。
ローカルウィンドプはブレークポイントで中断しているときプロシージャの変数の内容を表示します。
ウォッチウィンドウの利用
ウォッチウィンドウは「表示」メニュー・「ウォッチウィンドウ」で表示します。
ウォッチウィンドウはウォッチ式に条件を入力することによって変数を確認したりプロシージャを中断したりできます。
イミディエイトウィンドの利用
イミディエイトウィンドを利用すると効率的なデバッグが可能になります。実行中のプロシージャの変数等の出力・関数の結果等の事前確認・プロシージャ中断中の変数等の確認等ができます。
Debug.Print
Debug.PrintのPrintメソッドを使用すると、イミディエイトウィンドウに変数の値や、関数の結果を出力させることができます。
演算の実行
イミディエイトウィンドウでは、演算の結果を表示したり関数を実行させることができます。実行する際は「?」に続けて式を記入し[Enter]キー押下で結果が表示されます。
例えば下記のような内容です。
入力:?2*3[Enter] 結果:6
入力:?format(1234,”#,###”)[Enter] 結果:1,234
プロシージャの呼び出し
プロシージャ名を入力することでプロシージャを実行できます・。
プロシージャの中断時に使用する
プロシージャの実行を中断したとき、イミディエイトウィンドウを使って変数の値等をを確認することができます。
コメント