デバッグモードについて

処理の実行確認を行うデバッグについて、操作方法と解説

デバッグモードとはコードの動きを確認することです
このモードを実行する事で、処理作成の動きの確認やバグ発生時の原因の特定に役立ちます

この力はコーディング力よりも重要です

どれだけのコーディング力があっても、いきなり思い通りの処理をテストせずに作成できる人もいないと思います、少なくとも自分は無理です
バグの無い処理をいきなり完成させることが出来る人もまずいないでしょう

つまり、コーディングした後にこのデバッグモードを有効に活用することによって安定の処理作成やバグの発見につながるわけです
そのため、デバッグ力は非常に重要な要素です

コードなんて調べりゃ出てくるし、このサイトでコピペするだけでも作れますが、このデバッグは完全にあなたの力でやりきるしかありません

デバッグモードの操作方法

デバッグモードの各操作メニュー
デバッグ操作のメニュー画面

デバッグメニューにある項目から操作を行います
基本的にコードの動きを確認しながら行うので、このメニューから選択してデバッグすることはありません

そのために、全てショートカットキーがありますので解説します

ステップインの動き
ステップインの動き

「F8」を押していくと、コードを1行ずつ実行していくステップイン操作ができます
基本的にはこの操作でデバッグは行います

1行実行して結果を確認して、次の1行を実行する・・・という形で処理の動きを確認していきます

キーを押し続ければ、その間処理がずっと実行されていきます

カーソル行まで実行の動き
カーソルまで実行する動き

「Ctrl+F8」でカーソルの行まで一気に処理を実行する事ができます
コード行数が多い場合に、後半部分を確認するのに前半部分をいちいちステップインで確認するのは手間になる場合に使用します

ただ、これに関してはブレークポイントやStopステートメントと同じ動きになるので、そちらのほうが便利かもしれません

カーソル行に飛ぶ動き
処理を飛ばす動き

「Ctrl+F9」処理をカーソル行に移動させることができます
その間の処理は実行されません

前半の処理が後半の処理に影響を与えず、動作確認が完了している場合に使用します

処理を実行しないので、処理時間がかかるような場合には上記の移動やブレークポイントより有効なのでよく使用します

ステップオーバーとステップアウトは、処理を呼び出した際に行う操作です

サブプロシージャ実行時のステップインの動き
ステップインでの動き

まずは、画像の様な処理をCallで呼び出している処理の動きをステップインで確認してください

ステップオーバーの動き
ステップオーバーの動き

「Shift+F8」でステップオーバー操作になります
この操作は呼び出し処理はデバッグせずに実行のみを行う操作です

サブ処理テストのプロシージャには移動せずに、処理は実行されています

ステップアウトの動き
ステップアウトの動き

「Ctrl+Shift+F8」でステップアウトの操作になります
この操作は呼び出し処理内で行うと、その処理は実行して抜け出す動きになります

画像の動きですが、サブ処理テストの行で操作するとプロシージャを抜けて、呼び出し元の次の処理に移動します
この時処理は実行されています

ステップオーバーとステップアウトの動きを確認してもらうと分かりますが、これはブレークポイントで十分対応できます
なので、この2つはあまり使用場面は無いと思いますので、覚える必要はありません
この操作の動きの確認だけしてもらえばいいです

デバッグ操作で覚えてほしい操作

上記で一通り紹介しましたが、結局ブレークポイントやStopステートメントを活用することにより、そちらのほうが便利であったりします

なので、デバッグ操作で覚えておきたいのは以下の操作です

・ステップイン「F8」-1行ずつ実行する
・カーソル行に飛ばす「Ctrl+F9」-処理を実行せずに移動する

の2つです、これに合わせてもう1つ

・処理の継続「F5」-処理を通常通りに実行する

この通常実行は、処理途中で後の確認は必要ない場合に残りの処理を実行させる場合やブレークポイント設置個所まで通常実行を行いたいときに使用します

実行時エラー表示
実行時エラーの表示画面

また、画像のような実行時エラー画面が表示されたらデバッグボタンを押してください
すると、そのエラーの発生した行がデバッグモードで停止していますのでバグの修正を行ってください

修正が完了したら、F5で通常実行したりして動作の確認を行います

デバッグが難しい場面

以上のようなデバッグ操作でほぼ処理の動きの確認は行えます
ただ、デバッグ操作では動きの確認が難しい場面もあります

例えば、SendKeysメソッドはアクティブなアプリに対してキーストロークを送信するメソッドですが、これをデバッグ中に行えば当然アクティブアプリはVBEになるのでうまくデバッグできません

またユーザーフォームのSetFocusメソッドも同じですが、このメソッドは指定のコントロールにフォーカスを取得させます
デバッグ中ではVBEがフォーカスを得ているので、このコードをデバッグモードで実行してもうまくいきません

他にも表示関係でもありえますが、デバッグ操作はデバッグ力の一部と思っていてください

基本的なデバッグ力は、探し出す力になります
これは99%経験によるものと思いますので、いろんな処理を作ってデバッグモードで動きを確認してみてください
気づけばこの力はついてきているはずです