コードを書いてみたけど、ミスチェックのやり方が分からない。
「デバッグ」という言葉は聞いたことがあるけど、いまいちよくわからない。
コードは用意できても、思ったように動かない経験は、誰もが苦労するポイントです。エラーで止まってくれたならまだマシですが、変な動作でこれまで書いたコードを全部消すことになることもしばしば…
今回は、そんなミスチェックの方法、デバッグについて徹底解説していきます!デバッグという言葉の意味から、最低の労力でミスチェックを行える方法を紹介しますので、是非この記事を参考にしてみてください。
デバッグとは
デバッグとは、バグを見つけて修正する作業の事を表します。ここでいうバグというのは、「想定通りではない動作」のことです。
「想定通りに動かないコードの原因を見つけ、修正する作業」が、デバッグということになります。
VBAでのデバッグの手順
ここから具体的にデバッグの方法について紹介していきます。今回はミスチェックの方法として、デバッグ手順を紹介します。
①保存をする
何より大切で、忘れがちなのが、保存をすることです。VBAを動かす時には、必ず保存をしましょう。
VBAを実行すると、戻るボタンで前の状態に戻ることができなくなってしまいます。バグが原因でデータが消えてしまっても、戻るボタンでは戻すことができません。
デバッグ中であっても、VBAを動作させる事に変わりはありません。
デバッグ前・VBA実行前には、保存をすることを徹底しましょう。
②デバッグ手順
具体的なデバッグの方法は3種類です。それぞれの名前と用途を次の表にまとめました。
ステップイン | 基本的なデバッグ方法 一行ずつ実行して動作を確認する。 |
ブレークポイント | 長い処理やループ処理の途中で止めて動作を確認する。 |
Debug.Print | 変数の中身や処理の進捗を確認する。 複雑な計算に便利。 |
それでは、それぞれのデバッグ方法について、詳しく解説していきます。
②-1:ステップイン
基本的なデバッグ方法は、ステップインです。
これができれば、だいたいのデバッグはOKです。
<やり方>
①VBE画面を開き「F8」を押す。
「Sub 変数()」のタイトル部分に「→」が入り選択されていればOK
②「F8」を押す度一行ずつ実行される為、動作を確認する
F8を押す度に、矢印が一行ずつ下がると同時に、コードが実行されていきます。
この動作が、想定していた動作通りになっているかを確認します。
③途中でデバッグをやめるときは、□(リセット)を押す
VBE画面の上部にある□(リセット)ボタンを押すことで、デバッグを終了することができます。
<マウスのカーソルを当てると、変数の中身が確認できる>
変数部分にマウスのカーソルを合わせると、変数の中に何が入っているかを確認することができます。
誤作動の理由が分からない時に、どのタイミングで・どこに・何を・どのように動作しているかを、確認するときに便利な機能になります。
※変数については、こちらも併せて確認してみてください!
<指定の処理のところまでスキップする>
左側の→の部分を、動作を確認したい処理のところまでドラッグして持っていくことで、指定の処理の部分までスキップすることが可能です。
スキップされた部分の変数の代入や、動作は行われない為、実際の動きとは違うことに注意が必要です。
上記のように開始の時に変更を行うと、それまでの動作をスキップして矢印の部分からステップインの確認を行うことができます。
②-2:ブレークポイント
ブレークポイントは、VBAの動作を指定の場所で一時停止させる方法です。長い処理やループ処理の途中で動作を確認したいときに便利な機能です。
<やり方>
①止めたい行の左をクリックして、「●」をつける
この部分が止まる部分(ブレークポイント)となります。
②「▶」(実行)を押して、VBAを実行する
先ほど「●」をつけた部分で止まるので、そこから「F8」のステップインを行ったり、変数の確認を行ったりして、デバッグを行います。
〇使い分けについて
ブレークポイントは、For分の途中や長いコードの途中に置くときに、最も力を発揮します。
次のようなリストから、指定した会員Noを探して処理をするVBAを、ループ処理を使って作成するとします。
※参考
この場合、指定した会員Noが見つかるまで何回ループするかわからず、ステップインで一行ずつ実行するのは手間がかかります。ただ、指定した会員Noが見つかった時の処理は見ておきたい。そんなときに有効なのが、このブレイクポイントとなります。
このように、指定した会員Noが見つかった場合のコードにブレイクポイントを置くことによって、会員Noが見つかる前までの処理を行い、そこから先をステップインで実行することができます。
②-3:Debug.Print
他の教本やサイトでもよく紹介される、Debug.PrintはVBAデバッグの主力です。コードの途中に組み込むことで、値をイミディエイトウィンドウに表示させることができます。
動作の進捗の確認や、変数の確認に便利な機能ですが、初心者の使い分け方としては、複雑な計算を、複数の変数を使って行っている時に使うもの、という認識でOKです。
〇イミディエイトウィンドウ(Debug.Printの表示先)の出し方
①VBEの「表示」→「イミディエイトウィンドウ」を選択
②VBE内、もしくは別ウィンドウで表示されているかを確認
〇Debug.Printの使い方
Debug.Printはこれまでのデバッグ方法とは違い、VBAのコードを追加します。
使い方は次の通りです。
Debug.Print 変数(出力する値)
このコードを組み込むことで、ここを通れば出力する値がイミディエイトウィンドウに表示されるようになります。
〇Debug.Printの使用例
以下は出力する値として、セルの値を指定した例です。このような形で、状況を知りたい部分にこのコードを書くことで、イミディエイトウィンドウから状況を確認することができます。
さいごに
今回はデバッグにについて、用語の意味からやり方まで解説しました。これらの方法を使いながらコードを作成することで、エラーを減らすだけでなく、VBAの理解も深まります。VBAの学習では、積極的にデバッグを取り入れてみてください!
また、VBA学習については、パラシュート式学習をこのサイトでは推奨しています。
是非ともそちらの記事も参考にしてみてください!
コメント