ExcelマクロVBA入門
VBEの使い方:イミディエイト ウィンドウ

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

VBEの使い方:イミディエイト ウィンドウ


VBE(Visual Basic Editor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。
ここではイミディエイト ウィンドウの使い方について説明します。


イミディエイトウィンドウの表示

メニュー「表示」→「イミディエイト ウィンドウ」
ショートカット:Ctrl + G

VBA VBE イミディエイト

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

VBA VBE イミディエイト

イミディエイトウィンドウの基本的な使い方

ウィンドウ内での操作により、ウィンドウに変数の値を出力したり、ステートメントを実行したりできます。

・VBA実行中は、実行中のプロシージャー内で実行される。
・実行していない時は、新規の標準モジュール(Option Explicitがない)上で実行される。
このように考えて以下を読むと理解しやすいと思います。

値を表示

VBA実行中に変数の値を表示
実行中のプロシージャーから参照可能な変数については、
?に続けて変数を書いてEnterすることで値を表示できます。

VBA VBE イミディエイト

数値の場合は先頭に符号が付きますので、正数の場合は半角スペースが先頭に付いて表示されます。

配列全体を指定するとエラーとなります。
VBA VBE イミディエイト

配列の要素を指定すれば表示できます。

VBA VBE イミディエイト
オブジェクト変数の場合は既定のプロパティが単一の値の場合は表示できますが、
既定のプロパティが無い場合や、戻り値がオブジェクトの場合はエラーとなります。
VBA VBE イミディエイト


Publicなモジュールレベル変数の値を表示
VBA実行中ではない場合でも、Publicなモジュールレベル変数であれば表示できます。
※Private変数は表示できません。

VBA VBE イミディエイト
プロシージャー「sample」を実行しておいて、
その後に、?Pvarで値が表示されます。


オブジェクトのプロパティの値を表示
エクセルにもともと存在するオブジェクトのプロパティであれば、
非実行中であっても、?オブジェクト.プロパティで表示できます。
※戻り値が単一の値以外(配列やオブジェクト)はエラーになります。
※戻り値のあるメソッドはプロパティ同様に扱えます。

VBA VBE イミディエイト

Ctrl+Spaceで入力候補が表示されます。

VBA VBE イミディエイト

VBA関数の結果を表示
VBAの組み込み関数の結果を表示できます。

VBA VBE イミディエイト

Functionプロシージャーの戻り値を表示
作成したFunctionプロシードャーの戻り値を確認できます。

VBA VBE イミディエイト


ステートメントを実行

VBA実行中に変数の値を変更
?を書かずに、変数への代入式を書いてEnterすることで、変数の値を変更できます。

VBA VBE イミディエイト

iに3が入っているときに、
i=1
これでEnterして、再度iの値を表示しています。

Publicなモジュールレベル変数の値を変更
VBAのモジュールレベル変数は、VBAの実行が終了した後でも、その値を保持しています。
Public変数については、VBA実行中ではない場合でも変更できます。
※Private変数は扱えません。
変更方法は、前記のVBA実行中に変数の値を変更と同じです。

オブジェクトのプロパティの値を変更
?を書かずに、プロパティへの代入式を書いてEnterすることで、プロパティの値を変更できます。

VBA VBE イミディエイト

A1セルに"test"が入っているときに、
range("A1")="てすと"
これでEnterして、再度A1セルの値を表示しています。

重要!
Application.ScreenUpdating = True
デバッグ中にVBAが途中終了した場合、
Application.ScreenUpdatingがTrue状態に戻らない場合があり、
クリックしても画面が変わらない等の症状になる場合があります。
このような場合は、イミディエイトウィンドウで、
Application.ScreenUpdating = Trueを入れてEnterしてください。
Application.EnableEvents = True
イベント処理の中で、Application.EnableEvents = Falseとしている場合、
途中でVBAが終了してしまうと、そのままになってしまい、新たなイベントが発生しなくなります。
このような場合は、イミディエイトウィンドウで、
Application.EnableEvents = Trueを入れてEnterしてください。

プロシージャーを実行
プロシージャーを直接起動できます。

VBA VBE イミディエイト

sample
と入力してEnterしています。

実行できるプロシージャーは特に制限はありません、引数も指定できます。

VBA VBE イミディエイト


Debug.Print

VBAの任意の位置で、
Debug.Print 変数・定数・式
これで、イミディエイト ウィンドウに出力できます。

変数・定数・式は、単一の値である必要があります。
配列やオブジェクトは出力できません。

;(セミコロン)に続けて書かれた変数・定数・式の値は、改行されずに表示されます。
,(カンマ)に続けて書かれた変数・定数・式の値は、一定も字数間隔をあけて表示されます。

VBA VBE イミディエイト

セミコロンやカンマは、イミディエイトウィンドウで?で表示する場合でも使えます。

イミディエイトウィンドウをクリアする
イミディエイトウィンドウの内容は後ろにどんどん追加されて行ってしまいます。
(一定行数に達すると、古いものが消されます。)
どこかの時点で全消去したい時は、
ウィンドウ内の文字列を全選択(Ctrl+A等)して「Delete」してください。

イミディエイトウィンドウの高度な使い方

イミディエイトウィンドウでは前述のとおり任意のステートメントを実行できます。
(Dim等、実行出来ないステートメントはあります)
ただし、
1行で確定(1行で処理が完結)していなければなりません。
つまり、
複数行をまとめて実行することはできません。
従って、ブロック構文(Fo~NextやIf~End If)は普通に書くことはできません。

イミディエイトウィンドウで複数ステートメントを実行するには、
:(コロン)で複数ステートメントを1行に書いて実行します。
このような方法については、以下でいろいろなパターンが紹介されています。
VBAのデバッグにおける真のイミディエイトウィンドウの使い方

イミディエイトでは、変数宣言のDimは実行できませんが、
そもそも、Option Explicitにかかわらず変数宣言の必要がありません。
つまり、イミディエイトではいきなり変数を使う事が出来ます。
そして、その変数はイミディエイト内で値が保持されます。

VBA VBE イミディエイト

For~Nextを1行に書いて、

VBA VBE イミディエイト

配列も扱えます。

VBA VBE イミディエイト

さらに、こんなことも可能です。
(ちょっと現実離れしてはいますが)

VBA VBE イミディエイト

以上のように、ある程度はプロシージャーを書くのと同様の事が出来ます。
タイピングが気にならなければ、このような使い方も可能だという紹介です。
ただし、
イミディエイトウィンドウに入力した内容は、エクセルを閉じると消えてしまいますので、
1回その場だけの実行として素早く実行したい場合に限定されます。
通常は、普通にプロシージャーを書いたほうが良いでしょう。

イミディエイトウィンドウの最後に

イミディエイトウィンドウは、VBAデバッグではなくてはならないものです。
特段に難しい使い方を覚える必要はありませんが、最低限の使い方はしっかり覚えておきましょう。
ローカルウィンドウウォッチウィンドウと使い分けて、効率的よいデバッグをしてください。



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

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


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

VBAクラスのAttributeについて(既定メンバーとFor…Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)
VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行位置(行番号)を取得できるErl関数|VBA技術解説(10月11日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • VBEの使い方:イミディエイト ウィンドウ

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


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




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