VBA入門
VBEの使い方:ウォッチ ウィンドウ

VBAの開発環境であるVBEの基本的な使い方
最終更新日:2021-10-14

VBEの使い方:ウォッチ ウィンドウ


VBE(Visual Basic Editor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。


ここではウォッチ ウィンドウの使い方について説明します。


ウォッチ ウィンドウの表示

メニュー「表示」→「ウォッチ ウィンドウ」

VBA VBE ウォッチウィンドウ

初期設定では、コードウィンドウの下にドッキング表示されます。

VBA VBE ウォッチ ウィンドウ


ウォッチ ウィンドウとは

ウォッチ ウィンドウに変数や式を追加(ウォッチ式の追加)することで、
変数の中身を見られるようにしたり、条件を満たしたときや値が変わった時にVBAを中断させることができます。
中断したVBAは、F8(ステップイン)またはF5で継続できます。

ウォッチ式の追加は、VBA実行前でも実行途中でもいつでも追加できます。
ウォッチ式を追加した時点から有効となります。


「ウォッチ式の追加」の操作手順

ウォッチ式の追加でウォッチ ウィンドウへ式を追加すると、ウォッチウィンドに一覧登録されます。

VBA VBE ウォッチ ウィンドウ

ウォッチ式の追加の手順がいくつかあるので、順に説明します。

右クリックメニュー

コードウィンドウで右クリック
VBA VBE ウォッチ ウィンドウ

「ウォッチ式の追加」」ダイアログ画面が表示されます。

ウォッチ ウィンドウで右クリック
VBA VBE ウォッチ ウィンドウ

「ウォッチ式の追加」」ダイアログ画面が表示されます。


ツールバー「デバッグ」

変数または式を選択しておきます。
VBA VBE ウォッチ ウィンドウ

VBA VBE ウォッチ ウィンドウ
VBA VBE ウォッチ ウィンドウ クイック ウォッチ(Shift + F9)

「クイック ウォッチ」ダイアログ画面が表示されます。

VBA VBE ウォッチ ウィンドウ

「追加」クリックで「ウォッチ式の追加」」画面が表示されます。

変数または式が選択されていない場合は、エラーとなります。

VBA VBE ウォッチ ウィンドウ


ドラッグ&ドロップ

コードウィンドウから、ドラッグ&ドロップで追加できます。

VBA VBE ウォッチ ウィンドウ


ウォッチ式の削除・編集

ウォッチ ウィンドウの、当該の式を右クリック

VBA VBE ウォッチ ウィンドウ

ウォッチ式の編集
VBA VBE ウォッチ ウィンドウ

編集して「OK」で変更されます。

ウォッチ式の削除
ウォッチ ウィンドウから削除されます。


ウォッチ式の追加

VBA VBE ウォッチ ウィンドウ

対象
ウォッチ式の対象を指定します。
対象とは、
その変数・式が、どのモジュールのどのプロシージャーに含まれているものかという事です。

VBA VBE ウォッチ ウィンドウ

VBA VBE ウォッチ ウィンドウ

操作したモジュールの操作したプロシージャーが初期選択されているので、
ほとんどの場合は、そのままで良いはずです。

ドロップダウンで表示されるプロシージャーは、その下で選択したモジュールがリストされます。

ウォッチの種類
式のウォッチ
式(変数や式)の値が表示されます。
配列やオブジェクトでは、ドリルダウンでさらに詳細を見ることができます。

表示内容は、ローカルウィンドウと同様となります。
ローカルウィンドウとの大きな違いは、
実行中のプロシージャー以外の変数も見ることができることです。

VBA VBE ウォッチ ウィンドウ

同一の変数名も多々あり得るので、
そのような場合は、「対象」を良く確認する必要があります。

式が True のときに中断
式が条件を満たした(Trueになった)ときに、VBAが中断されます。

VBA VBE ウォッチ ウィンドウ

VBA VBE ウォッチ ウィンドウ

cnt = cnt + 2 これによって、cntの値が12になった時、
cnt>10がTrueとなり、VBAが中断します。

F5またはF8で継続できます。

式の内容が変化したときに中断
式の値が変化したときに、VBAが中断されます。

VBA VBE ウォッチ ウィンドウ

VBA VBE ウォッチ ウィンドウ

cnt(Long型)はプロシージャー開始時点で0で初期化されています。
値が、0以外になった時にVBAが中断します。

変数に同じ値を入れても中断しません、あくまで内容が変わった時に中断します。

変数ではなく、関数、数式、条件式等の式を指定した場合には、式の評価結果が変化した場合に中断します。

F5またはF8で継続できます。


ウォッチ ウィンドウの制限と注意

引数が必要なプロパティは表示されません
オブジェクトの中の、引数が必要なプロパティは表示されません。
例えば、RangeのAddressプロパティは、引数があるので表示されません。

VBA VBE ウォッチ ウィンドウ

同様にValueにも引数があるので表示されませんが、Value2は引数が無いので表示されています。
※引数が省略可能なものであっても、そのプロパティは表示されません。

VBA VBE ウォッチ ウィンドウ

Valueの引数について
VBA VBE ウォッチ ウィンドウ

引数のあるプロパティは、そのプロパティをウォッチ式として追加すれば見ることができます。

VBA VBE ウォッチ ウィンドウ


プロパティは常に評価されてしまいます
オブジェクトのプロパティをウォッチ式に登録すると、そのプロパティは常に評価されます。
つまり、そのオブジェクトを使用した時点で、ウォッチ式のプロパティが常に動作してしまうという事です。

これは、ウォッチ ウィンドウを表示していなくても、ウォッチ式が登録されていれば動作します。
従って、プロパティが動作することでプログラムの動作に影響を及ぼすようなものは登録する際に注意してください。


ウォッチ ウィンドウの最後に

ウォッチ ウィンドウはとても強力な機能です。
しかし、若干使い方が面倒な感じを受けてしまうかもしれません。

プロシージャーのローカル変数ならローカル ウィンドウで済みますし、
一度見るだけなら、イミィディエイト ウィンドウで済んでしまうからです。

VBAを中断させる方法としては、If+ブレークポイントやDebug.Assertを使う事でも同じことができます。
中断する方法としては、これらの方法を使う人の方が多いかもしれません。
しかし、デバッグ中に何度も確認する変数や、ある条件になった時に停止させたい場合はとても便利に使えます。

イミィディエイト ウィンドウローカル ウィンドウとともに、いつでも使えるようにしておきましょう。




同じテーマ「マクロVBA入門」の記事

VBEの使い方:VBE画面の全体説明
VBEの使い方:ツールのオプション設定
VBEの使い方:ツールバー
VBEの使い方:右クリックメニューとヘルプ
VBEの使い方:ショートカットキーとコード編集
VBEの使い方:イミディエイト ウィンドウ
VBEの使い方:ローカル ウィンドウ
VBEの使い方:ウォッチ ウィンドウ
VBEの使い方:オブジェクト ブラウザー
VBEの使い方:デバッグ


新着記事NEW ・・・新着記事一覧を見る

抜けている数値を探せ|エクセル雑感(2022-07-01)
.Net FrameworkのSystem.Collectionsを利用|VBA技術解説(2022-06-29)
迷路ネコが影分身の術を体得したら…|エクセル雑感(2022-06-27)
迷路にネコが挑戦したら、どうなるかな…|エクセル雑感(2022-06-26)
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)|エクセル雑感(2022-06-24)
「マクロの登録」で登録できないプロシージャーは?|エクセル雑感(2022-06-23)
オブジェクトのByRef、ByVal、Variant|エクセル雑感(2022-06-22)
コメントから特定形式の年月を取り出す|エクセル雑感(2022-06-19)
4,9を使わない連番作成|エクセル雑感(2022-06-17)
連番を折り返して出力|エクセル雑感(2022-06-16)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.マクロって何?VBAって何?|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ