皆さんは、VBAでデバッグする方法を知っていますか?
なんとなく聞いたことがあるけど詳しい使い方はよくわからない・・・という方も多いのではないでしょうか?
そこで今回は、
・デバッグとは
といった基礎的なことから、
・Debug.Printを使ったシンプルなデバッグ方法
・ブレークポイントを使ったステップ実行方法
・合わせて覚えると便利なイミディエイトウィンドウの使い方
といった応用的な方法まで、徹底的に解説します!
デバッグとは
最初に、デバッグについて簡単に説明します。
処理のバグ・エラーなどを修正して、想定通りコードが動くようにしていく作業のことです。
デバッグ方法は大きく分けて2パターンあります。
- 値をイミディエイトウィンドウに出力して動作を確認
- 1行1行処理を動かして動作を確認
どちらも覚えておくと便利なのですが、わかりやすい方から説明してい行きますね。
デバッグ方法1:イミディエイトウィンドウに値を出力
最初は、イミディエイトウィンドウに値を出力して確認する方法です。
この方法が一番シンプルで1行コードを書くだけなので、最初に覚えるのがおすすめです!
Debug.Print 値
でイミディエイトウィンドウに値を書き出すことができます。
値は文字列、数値、変数などが使えます。
たとえば、次のように変数に入れたメッセージを出力することもできます。
サンプルコード:
Sub Test() Dim strMessage As String strMessage = "ログ出力テスト" Debug.Print strMessage End Sub
実行結果:
ログ出力テスト
変数の値をささっと確認することができるので、計算に使う変数はDebug.Printで確認しつつコーディングするのがおすすめです。
デバッグ方法2:ブレークポイントをはってステップ実行
次に、1行1行処理を確認しつつデバッグしていく方法について解説します!
ブレークポイントで処理を止めて1行ずつステップ実行することで、処理の動き、変数の値などを確認しつつ処理を修正することができます。
この説明だけではよくわからないと思うので、ブレークポイント、ステップ実行についてそれぞれ詳しく解説します。
ブレークポイントの貼り方
コードウィンドウ内の処理を止めたい行の一番左をクリックすると、ブレークポイントを付けることができます。
この処理だと、「Debug.Print strMessage」の処理で、イミディエイトウィンドウに値を出力する前に処理を止めることができます。
ステップ実行の使い方
ただ、1行ずつ処理を確認したいときにすべての行にブレークポイントを貼るのは大変ですよね。
そんな時に便利なのが、ステップ実行です。
ブレークポイントを貼った後、「デバッグタブ」→「ステップインまたはステップオーバー」を選択することで1行処理を進めることができます。
ステップインとステップオーバーは、Sub・Functionを呼び出す処理の動きが違います。
・ステップイン :Sub・Function処理の中の1行目に移動
・ステップオーバー:Sub・Function処理の中のにはいかず、次の1行目に移動
最初はどちらか1つだけでもいいので、覚えて使ってみると良いでしょう。
補足:合わせて覚えると便利な機能とは
デバッグは値の確認、処理の動きの確認をしていく作業ですが、値の確認だけでいうとイミディエイトウィンドウを使いこなすのがおすすめです!
今回はDebug.Printで出力する場所としてイミディエイトウィンドウを紹介しましたが、ブレークポイントで止めた後イミディエイトウィンドウを使って値を確認する方法や、既存の関数の動きを確認する方法など、覚えておくと便利な使い方が多いです。
以下記事で紹介しているので、気になる方はぜひ見てみてくださいね!
まとめ
今回は、VBAでデバッグする方法について解説しました。
デバッグを覚えると、正確に速くVBAを書くことができるようになります。
「Debug.Printの使い方を覚える→慣れてきたらステップ実行を覚える」の流れがおすすめなので、ぜひ使ってみてくださいね!