VBEの使い方:イミディエイト ウィンドウ
VBE(Visual Basic Editor)は、VBAで使われるコードエディタ、コンパイラ、デバッガ、その他の開発支援ツールが統合された開発環境です。
目次
イミディエイト ウィンドウの表示
ショートカット:Ctrl + G
イミディエイト ウィンドウの基本的な使い方
・実行していない時は、新規の標準モジュール(Option Explicitがない)上で実行される。
値を表示
VBA実行中に変数の値を表示
?に続けて変数を書いてEnterすることで値を表示できます。
既定のプロパティが無い場合や、戻り値がオブジェクトの場合はエラーとなります。
モジュールレベル変数の値を表示
その後に、?pVvarで値が表示されます。
オブジェクトのプロパティの値を表示
非実行中であっても、?オブジェクト.プロパティで表示できます。
※戻り値が単一の値以外(配列やオブジェクト)はエラーになります。
※戻り値のあるメソッドはプロパティ同様に扱えます。
VBA関数の結果を表示
Functionプロシージャーの戻り値を表示
?Module1.文字列編集
?はPrintの糖衣構文です
イミディエイト ウィンドウ内では、「?」でも「Print」でもどちらで記述しても同じになります。
ステートメントを実行
VBA実行中に変数の値を変更
i=1
これでEnterして、再度iの値を表示しています。
モジュールレベル変数の値を変更
モジュールレベル変数については、VBA実行中ではない場合でも変更できます。
変更方法は、前記のVBA実行中に変数の値を変更と同じです。
オブジェクトのプロパティの値を変更
range("A1")="てすと"
これでEnterして、再度A1セルの値を表示しています。
Application.ScreenUpdatingがTrue状態に戻らない場合があり、
クリックしても画面が変わらない等の症状になる場合があります。
このような場合は、イミディエイト ウィンドウで、
Application.ScreenUpdating = Trueを入れてEnterしてください。
途中でVBAが終了してしまうと、そのままになってしまい、新たなイベントが発生しなくなります。
このような場合は、イミディエイト ウィンドウで、
Application.EnableEvents = Trueを入れてEnterしてください。
プロシージャーを実行
と入力してEnterしています。
実行できるプロシージャーは特に制限はありません、引数も指定できます。
その時点で参照出来ない(スコープ範囲外の)Privateプロシージャーは、モジュール名で修飾してください。
またVBA停止中は、Privateプロシージャーはモジュール名で修飾してください。
Debug.Print
Debug.Print 変数・定数・式
これで、イミディエイト ウィンドウに出力できます。
配列やオブジェクトは出力できません。
,(カンマ)に続けて書かれた変数・定数・式の値は、一定の字数間隔をあけて表示されます。
イミディエイト ウィンドウをクリアする
(一定行数に達すると、古いものが消されます。)
どこかの時点で全消去したい時は、
ウィンドウ内の文字列を全選択(Ctrl+A等)して「Delete」してください。
イミディエイト ウィンドウの高度な使い方
(Dim、With等、実行出来ないステートメントはあります)
つまり、複数行をまとめて実行することはできません。
従って、ブロック構文(Fo~NextやIf~End If)は普通に書くことはできません。
:(コロン)で複数ステートメントを1行に書いて実行します。
このような方法については、以下でいろいろなパターンが紹介されています。
VBAのデバッグにおける真のイミディエイト ウィンドウの使い方
そもそも、Option Explicitにかかわらず変数宣言の必要がありません。
つまり、イミディエイトではいきなり変数を使う事が出来ます。
そして、その変数はイミディエイト内で値が保持されます。
Set a = Selection.SpecialCells(xlCellTypeBlanks):a.FormulaR1C1 = "=R[-1]C":For Each b In a:b.Value = b.Value:Next
普通のプロシージャーに書き直してみると理解できると思いますが、
これは、選択範囲内の空白セルに直ぐ上のセルを入れています。
さすがに、このくらいになると、プロシージャーを書いたほうが良いですね。
(ちょっと現実離れしてはいますが参考まで)
タイピングが気にならなければ、このような使い方も可能だという紹介です。
1回その場だけの実行として素早く実行したい場合に限定されます。
通常は、普通にプロシージャーを書いたほうが良いでしょう。
イミディエイト ウィンドウの最後に
特段に難しい使い方を覚える必要はありませんが、最低限の使い方はしっかり覚えておきましょう。
ローカル ウィンドウ、ウォッチ ウィンドウと使い分けて、効率良くデバッグをしてください。
同じテーマ「マクロVBA入門」の記事
VBEの使い方:VBE画面の全体説明
VBEの使い方:ツールのオプション設定
VBEの使い方:ツールバー
VBEの使い方:右クリックメニューとヘルプ
VBEの使い方:ショートカットキーとコード編集
VBEの使い方:イミディエイト ウィンドウ
VBEの使い方:ローカル ウィンドウ
VBEの使い方:ウォッチ ウィンドウ
VBEの使い方:オブジェクト ブラウザー
VBEの使い方:デバッグ
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.条件分岐(Select Case)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。