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

VBAの開発環境であるVBEの基本的な使い方
公開日:2019-10-04 最終更新日: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の使い方:右クリックメニューとヘルプ
・右クリックメニュー ・(F1) ・右クリックメニューとヘルプの最後に
VBEの使い方:ショートカットキーとコード編集
・VBEショートカット一覧 ・ショートカットキーの具体的な使い方 ・コメントアウト ・ショートカットとコード編集の最後に
VBEの使い方:イミディエイト ウィンドウ
・イミディエイト ウィンドウの表示 ・イミディエイト ウィンドウの基本的な使い方 ・イミディエイト ウィンドウの高度な使い方 ・イミディエイト ウィンドウの最後に
VBEの使い方:ローカル ウィンドウ
・ローカル ウィンドウの表示 ・ローカル ウィンドウの基本的な使い方 ・ローカル ウィンドウの制限 ・ローカル ウィンドウの最後に
VBEの使い方:ウォッチ ウィンドウ
VBEの使い方:オブジェクト ブラウザー
・オブジェクトブラウザーの表示 ・オブジェクトブラウザーの使い方 ・クラスおよびメンバーの見方 ・オブジェクトブラウザーの最後に
VBEの使い方:デバッグ
・実行、中断、リセット(停止) ・ステップ実行 ・呼び出し履歴 ・VBA実行途中で変数の状態を確認 ・Debug.Print ・Debug.Assert ・デバッグの最後に


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

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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



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