今までVBAでファイル読み込みやグラフ作成の方法を紹介してきましたが、今回はデバッグの方法を紹介します。
デバッグ方法は知っておいて損はない。
いざという時に役立ちますよ。
VBAでデバッグする方法は2通りあります。
- ウォッチ式で変数の値を見るやり方
- イミディエイトウィンドウに値を表示するやり方
初心者にも分かり易いようにキャプチャ多めで紹介していきます。
今回の試作プログラム
デバッグの方法を紹介するにあたり試作したプログラムの紹介です。
こんな感じのユーザーフォームに数値を設定してもらい、
![数値入力フォーム](https://rikei-fufu.com/wp-content/uploads/2019/06/ユーザーフォーム.png)
1から入力数字までを足した値を表示します。
![結果の表示](https://rikei-fufu.com/wp-content/uploads/2019/06/結果.png)
ソースコードは以下。
標準モジュールのソースコード
Public inp_no As Integer 'ユーザーフォームで入力された数値
Sub main()
Dim inp As Integer
Dim sum As Integer
Dim i As Integer
'数値をGet
UserForm1.Show
inp = inp_no
'0以下の場合は終了
If inp < 1 Then
MsgBox "1以上の数を入力してください"
Exit Sub
End If
sum = 0
For i = 1 To inp
sum = sum + i
Next i
MsgBox "1から" + CStr(inp) + "までの合計は「" + CStr(sum) + "」です。"
End Sub
ユーザーフォームのソースコード
Private Sub CommandButton1_Click()
inp_no = TextBox1.Value
Unload Me
End Sub
ウォッチ式で値を見る
1つ目のデバッグ方法は、ウォッチ式を使う方法です。
コードにデバッグ文を追加することなく、そのままのコードでデバッグできます。
まず、ウォッチウィンドウを表示しましょう。
「表示」タブから「ウォッチウィンドウ」を選択します。
![ウォッチウィンドウの表示1](https://rikei-fufu.com/wp-content/uploads/2019/06/ウォッチウィンドウ-1024x576.png)
![ウォッチウィンドウの表示2](https://rikei-fufu.com/wp-content/uploads/2019/06/ウォッチウィンドウ2-1024x544.png)
ウォッチウィンドウが表示できたら、ウォッチ式を追加しましょう。
ウォッチ式の追加は、ソースコード上で変数を選択した状態でし、「ウォッチ式の追加」を選択します。
対象やウォッチの種類を選択するフォームが出ますが、基本的には変更しなくて大丈夫です。そのままOKをクリック。
![ウォッチ式の追加1](https://rikei-fufu.com/wp-content/uploads/2019/06/ウォッチ式追加-1024x576.png)
![ウォッチ式の追加2](https://rikei-fufu.com/wp-content/uploads/2019/06/ウォッチ式追加2.png)
![ウォッチ式の追加3](https://rikei-fufu.com/wp-content/uploads/2019/06/ウォッチ式追加3-1024x576.png)
これでウォッチウィンドウに変数が追加されました。
次に、ブレークポイントを設定します。
ブレークポイントは、プログラムを実行中に一時的に止めたい(ブレークしたい)箇所のソースの左側をクリックして設定します。
ブレークポイントが設定されると、下図のように左側に●がつき、赤っぽい色がつきます。
![ブレークポイントを設定](https://rikei-fufu.com/wp-content/uploads/2019/06/ブレークポイントを設定-1024x576.png)
ウォッチ式とブレークポイントで準備完了!
プログラムを実行してみましょう。
![デバッグの様子1](https://rikei-fufu.com/wp-content/uploads/2019/06/デバッグ-1024x576.png)
ブレークポイントで実行が中断し、ウォッチウィンドウの変数に値が表示されています。
変数の値を確認できたら、実行を再開させましょう。
再開方法は上側にある「▶(継続(F5))」をクリックします。(またはF5キーを押す)
![デバッグの様子2 実行の再開](https://rikei-fufu.com/wp-content/uploads/2019/06/デバッグ2-1024x576.png)
![デバッグの様子3](https://rikei-fufu.com/wp-content/uploads/2019/06/デバッグ3-1024x576.png)
このように、「ブレークポイントで中断→変数の値を確認→実行再開」を繰り返すことでデバッグしていきます。
イミディエイトウィンドウに書き出す
ウォッチ式を設定してブレークポイントで止まった時に値をチェックするやり方は簡単でコードをいじる必要がありませんが、いちいちプログラムの実行が止まるのが難点ですよね。
そんな時は、もう一つのデバッグのやり方で、プログラムの実行を止めずに値をチェックしましょう。
まずはイミディエイトウィンドウを表示します。
「表示」タブより、「イミディエイトウィンドウ」を選択します。
![イミディエイトウィンドウの表示1](https://rikei-fufu.com/wp-content/uploads/2019/06/イミディエイトウィンドウ-1024x576.png)
![イミディエイトウィンドウの表示2](https://rikei-fufu.com/wp-content/uploads/2019/06/イミディエイトウィンドウ2-1024x576.png)
イミディエイトウィンドウでは、プログラム実行中の変数の値や関数の結果を表示させることができます。
実行の途中経過を確認するのに便利な機能です。
イミディエイトウィンドウへの表示方法は、表示させたい箇所に以下の文を追加します。
Debug.Print 表示したい変数など
今回はFor文の最中にiとsumを表示させてみます。
For i = 1 To inp
sum = sum + i
Debug.Print i, sum
Next i
このようにしてみました。
実行した結果は
![イミディエイトウィンドウ 実行結果の表示](https://rikei-fufu.com/wp-content/uploads/2019/06/イミディエイトウィンドウ3-1024x576.png)
このようになります。
コードの中にデバッグ文が入ってもいい方は、イミディエイトウィンドウを使うやり方のほうが楽でいいですね。
というわけで、今回はVBAでデバッグをやり方を2通り紹介しました。
ぜひ、活用してみてくださいね。
んじゃ、また~
おススメのプログラミング独学方法はこちらの記事にまとめました!
![](https://rikei-fufu.com/wp-content/uploads/2019/09/programming-300x169.jpg)
コメント