Developer

【ExcelVBA】ウォッチウィンドウ1
2021.02.26
Lv1

【ExcelVBA】ウォッチウィンドウ1

ウォッチウィンドウ

ウォッチウィンドウは変数やプロパティの設定値などをリアルタイムに監視することができます。ウォッチウィンドウという名前のとおり、特定の変数やプロパティをウォッチする機能を持っているウィンドウです。またそれから派生して、条件を設定してマクロの実行を一時的に止めることもできます。
これらの機能は、ブレークポイントを設定して「ステップ実行」したり、イミディエイトウィンドウを利用して変数の値を参照したりすることと同じことができるので、どちらも実際に使ってみて自分に合うやり方を見つけて頂ければと思います。
筆者はウォッチウィンドウではなくブレークポイントとイミディエイトウィンドウを使ったデバッグを多用しています。

表示するには、VBE(Visual Basic Editor)の「表示」メニュー→「ウォッチウィンドウ」を実行します。

016-001.png

ウォッチウィンドウはVBEの中にこのように表示されます。
場所はドラッグ&ドロップで好きな場所に移動させることができます。(別のウィンドウにすることもできます。)大きさも変えることができますので、ディスプレイの大きさに合わせて使いやすいサイズに変更しておきましょう。
016-002.png

ウォッチウィンドウの使い方は3つです。
・リアルタイムに変数やプロパティの値を監視する
・特定の条件のときにマクロの実行を一時停止する
・変数やプロパティの値が変化したときに一時停止する

1つずつ見ていきましょう。

リアルタイムに変数やプロパティの値を監視する

では、次のプログラムを作成して実行してみてください。

Sub VBA基礎第16回_1()
    Dim i As Integer
    Dim x As Integer
    Dim sum As Integer
    
    '' 合計値を保持する変数
    sum = 0
    For i = 0 To 4
        '' 0~9までのランダムな数値を生成
        x = Int(Rnd * 10)
        
        '' 合計値を更新
        sum = sum + x
    Next
    
    '' 結果を出力
    Debug.Print "0から9までのランダム値を5回合計した値:" & sum
End Sub

実行するとイミディエイトウィンドウに次のように合計値を表示します。
このプログラムはランダム生成用の関数「Rnd」を使用していますので、実行結果は毎回変わります。何度か繰り返し実行してみてください。

ウォッチウィンドウを使うには、まずウォッチ式の設定を行う必要があります。
プログラム上の変数「x」で右クリックし「ウォッチ式の追加」をクリックします。
016-004.png

「ウォッチ式の追加」ウィンドウが表示されます。
設定するのは次の3項目です。
・式
・対象
・ウォッチの種類

016-005

「式」は、監視する対象としたい変数やプロパティを記入します。今変数「x」のところで右クリックしましたので、あらかじめ「x」が表示しているかと思います。
「対象」は監視する期間を設定します。今回は「VBA基礎第16回_1」というプロシージャ内の変数「x」をクリックしましたので、プロシージャの欄はあらかじめ設定されています。
プロシージャとモジュールに関して図示しておきます。

ウォッチ対象としている変数「x」はプロシージャが異なれば、同じ名前の変数を作ることができます。そのため、ウォッチ式を追加するときに、どのプロシージャの変数なのかを指定する必要があります。

「ウォッチの種類」は今回は「式のウォッチ」を選択します。
「OK」をクリックするとウォッチウィンドウに追加したウォッチ式が表示されます。

016-007

これで準備が整いましたので実行してみましょう。リアルタイムで値を見ることが出来るとはいってもマクロの実行は一瞬で終わってしまいますので、確認したいポイントでブレークポイントを設定する必要があります。
今回は、7行目のループ処理に入る前にしてみましょう。

016-008

では、マクロを実行します。ブレークポイントを設定した7行目で処理が一時停止(黄色の網掛け)となるはずです。
このときにウォッチ式はどうなっているでしょうか。
まだ値を代入する処理が行われていませんので、値の欄は「0」となっているはずです。

016-009

次に「F8」キーを何度か押下して、処理を進めましょう。13行目まで進めてください。

016-010.png

これで変数「x」にランダム値を代入する処理が行われましたので、ウォッチ式の値が変わっているはずです。ランダムなのでこの画像とは値が違うかと思いますが、この画像では値が「7」となっています。
では、さらに「F8」キーを何度か押下して、処理を進めましょう。「Next」まで進めるとループの頭にもどり、先ほどと同じように13行目まで進めましょう。これで、再度変数「x」へ値の代入が行われているはずです。

016-011.png
このように、ウォッチウィンドウは設定した「式」の値をリアルタイムに監視することができます。

ウォッチ式を変更・削除する

ウォッチ式を変更する場合は、ウォッチウィンドウで変更・削除したい式を右クリックします。

016-012
編集をクリックすると、ウォッチ式を追加したときと同じウィンドウが表示されますので同じ要領で設定を行い、「OK」をクリックすれば編集することができます。削除を選ぶとクリックしたウォッチ式が削除されます。

まとめ

今回はウォッチウィンドウについて紹介しました。
プログラムをデバッグするときに使用する機能の1つで、リアルタイムで変数やプロパティの値を確認することができます。
機能の守備範囲はイミディエイトウィンドウと似ているところがありますので、どちらも実際に使ってみて使いやすいと感じた方を使用すればよいかと思います。

また、モジュールとプロシージャの関係性についても学習しました。1つのExcelファイルには複数のモジュールを作ることができ、さらに各モジュールには、複数のプロシージャを作ることができます。プロシージャの名前はモジュールが異なれば同じ名前を付けることが可能です。

確認問題

以下の「○○○」に当てはまる文言を解答してください。

ウォッチウィンドウの使い方は3つです。
・リアルタイムに変数やプロパティの値を○○○する
・特定の条件のときにマクロの実行を一時停止する
・変数やプロパティの値が変化したときに一時停止する

また、1つのExcelファイル内には複数の○○○を作ることができ、さらにその中には複数の○○○を作ることができる。

答え

ウォッチウィンドウの使い方は3つです。
・リアルタイムに変数やプロパティの値を「監視」する
・特定の条件のときにマクロの実行を一時停止する
・変数やプロパティの値が変化したときに一時停止する

また、1つのExcelファイル内には複数の「モジュール」を作ることができ、さらにその中には複数の「プロシージャ」を作ることができる。

次回は、ウォッチウインドウの続きです。

 
 

連載目次リンク

ExcelVBA 入門 連載目次