<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>イミディエイトウィンドウ &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E3%82%A4%E3%83%9F%E3%83%87%E3%82%A3%E3%82%A8%E3%82%A4%E3%83%88%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>イミディエイトウィンドウ &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBAイミディエイトウィンドウの使い方｜Debug.Printでデバッグ効率化</title>
		<link>https://mashukabu.com/excel-vbe-immediate-window-explanation/</link>
					<comments>https://mashukabu.com/excel-vbe-immediate-window-explanation/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 02 Jan 2022 12:31:26 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[Debug.Assert]]></category>
		<category><![CDATA[Debug.Print]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[VBE]]></category>
		<category><![CDATA[イミディエイトウィンドウ]]></category>
		<category><![CDATA[デバッグ]]></category>
		<category><![CDATA[ローカルウィンドウ]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=697</guid>

					<description><![CDATA[VBAのイミディエイトウィンドウの開き方からDebug.PrintとDebug.Assertの使い方、電卓として使う方法、ローカル・ウォッチウィンドウとの比較まで解説。MsgBoxより速く、止まらずにデバッグできるようになります。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「変数の中身、今なんだっけ？」</p>



<p class="wp-block-paragraph">VBAでマクロを書いていると、こんな場面がしょっちゅうありますよね。MsgBoxを仕込んで確認→消して→またMsgBox&#8230;&#8230;。ループ処理が100回まわるマクロだと、OKボタンを100回押す羽目になります。</p>



<p class="wp-block-paragraph">その手間、<strong>イミディエイトウィンドウ</strong>を使えば一瞬で解決できます。この記事では、Debug.Printの基本から電卓的な使い方まで解説します。Debug.Assertによるエラー早期検出もあわせてまとめていきますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBAのイミディエイトウィンドウとは</a><ol><li><a href="#toc2" tabindex="0">できること3つ（出力・実行・電卓）</a></li><li><a href="#toc3" tabindex="0">MsgBoxとの決定的な違い</a></li></ol></li><li><a href="#toc4" tabindex="0">イミディエイトウィンドウの開き方</a><ol><li><a href="#toc5" tabindex="0">ショートカットキーで開く（Ctrl+G）</a></li><li><a href="#toc6" tabindex="0">VBE画面での位置と表示確認</a></li></ol></li><li><a href="#toc7" tabindex="0">Debug.Printの基本的な使い方</a><ol><li><a href="#toc8" tabindex="0">変数の値を出力する</a></li><li><a href="#toc9" tabindex="0">複数の値を1行に並べる（;と,の違い）</a></li><li><a href="#toc10" tabindex="0">ループ内で使う</a></li></ol></li><li><a href="#toc11" tabindex="0">イミディエイトウィンドウを電卓として使う</a><ol><li><a href="#toc12" tabindex="0">?（クエスチョン）で即計算・即確認</a></li><li><a href="#toc13" tabindex="0">マクロ実行中断後に変数値を調べる</a></li><li><a href="#toc14" tabindex="0">ワンライナーでシートを操作する</a></li></ol></li><li><a href="#toc15" tabindex="0">Debug.Assertでエラーを早期に検出する</a><ol><li><a href="#toc16" tabindex="0">Debug.Assertの書き方と動作</a></li><li><a href="#toc17" tabindex="0">Debug.PrintとAssertの使い分け</a></li></ol></li><li><a href="#toc18" tabindex="0">デバッグウィンドウ3種の比較と使い分け</a><ol><li><a href="#toc19" tabindex="0">イミディエイト・ローカル・ウォッチの違い一覧</a></li><li><a href="#toc20" tabindex="0">どのシーンでどれを使うか</a></li></ol></li><li><a href="#toc21" tabindex="0">実務シナリオ別の使い方</a><ol><li><a href="#toc22" tabindex="0">ループが途中で止まる原因を調べたい</a></li><li><a href="#toc23" tabindex="0">If文が想定通り分岐しているか確認したい</a></li></ol></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAのイミディエイトウィンドウとは</span></h2>



<p class="wp-block-paragraph">イミディエイトウィンドウは、VBE（Visual Basic Editor）に組み込まれた<strong>デバッグ用の対話パネル</strong>です。英語では「Immediate Window」と呼ばれ、名前のとおり「即座に」結果を確認できるのが特長です。</p>



<h3 class="wp-block-heading"><span id="toc2">できること3つ（出力・実行・電卓）</span></h3>



<p class="wp-block-paragraph">主にできることは次の3つです。</p>



<ul class="wp-block-list"><li><strong>出力</strong>: <code>Debug.Print</code> で変数やプロパティの値を表示する</li><li><strong>実行</strong>: VBAのコードを1行ずつその場で実行する</li><li><strong>電卓</strong>: <code>?</code>（クエスチョンマーク）で計算結果を即確認する</li></ul>



<p class="wp-block-paragraph">マクロの実行を止めずに裏側で情報を確認できるのが最大のメリットです。MsgBoxのようにダイアログが出ないので、処理の流れを邪魔しません。</p>



<h3 class="wp-block-heading"><span id="toc3">MsgBoxとの決定的な違い</span></h3>



<p class="wp-block-paragraph">MsgBoxでも変数の値は確認できます。では何が違うのでしょうか。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>MsgBox</th><th>Debug.Print</th></tr></thead><tbody><tr><td>表示場所</td><td>ダイアログ（画面の前面）</td><td>イミディエイトウィンドウ</td></tr><tr><td>操作の中断</td><td>OKを押すまで止まる</td><td>中断なしで続行</td></tr><tr><td>ループでの利用</td><td>回数分ダイアログが出る</td><td>まとめて一覧表示</td></tr><tr><td>出力の保存</td><td>消えたら見返せない</td><td>ウィンドウに残る</td></tr><tr><td>本番コードへの影響</td><td>消し忘れるとユーザーに表示される</td><td>表示されないので安全</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは「<strong>マクロの動きを邪魔しない</strong>」ことです。Debug.Printはユーザーの画面には何も出ません。消し忘れても実害がないので、デバッグ用の出力として安心して使えます。</p>



<h2 class="wp-block-heading"><span id="toc4">イミディエイトウィンドウの開き方</span></h2>



<p class="wp-block-paragraph">本記事はWindows版Excelを対象としています。Excel 2010以降（Microsoft 365含む）であれば、同じ手順で操作できます。</p>



<p class="wp-block-paragraph">イミディエイトウィンドウを使うには、まずVBEを起動する必要があります。Excelで <strong>Alt + F11</strong> を押してVBEを開きましょう。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBE画面の見方</a>がまだよく分からないという方は、先にそちらの記事を読んでおくとスムーズです。</p>



<h3 class="wp-block-heading"><span id="toc5">ショートカットキーで開く（Ctrl+G）</span></h3>



<p class="wp-block-paragraph">VBEを開いたら、次のいずれかの方法でイミディエイトウィンドウを表示します。</p>



<ul class="wp-block-list"><li><strong>ショートカットキー</strong>: <strong>Ctrl + G</strong></li><li><strong>メニュー</strong>: 表示 → イミディエイトウィンドウ</li></ul>



<p class="wp-block-paragraph">Ctrl + Gが一番かんたんです。VBEが開いている状態で押せば、画面下部にパネルがすぐ現れます。</p>



<h3 class="wp-block-heading"><span id="toc6">VBE画面での位置と表示確認</span></h3>



<p class="wp-block-paragraph">イミディエイトウィンドウは、デフォルトではVBE画面の下部に表示されます。コードウィンドウの下にある横長のパネルがそれです。</p>



<p class="wp-block-paragraph">パネル上部に「イミディエイト」と書かれていれば正しく表示されています。表示位置を変えたい場合は、タイトルバーをドラッグすると自由に移動できます。フローティングウィンドウにもできますし、画面の端にドッキングさせることも可能です。</p>



<p class="wp-block-paragraph">もし閉じてしまっても、もう一度 Ctrl + G を押せばすぐ復活します。</p>



<h2 class="wp-block-heading"><span id="toc7">Debug.Printの基本的な使い方</span></h2>



<p class="wp-block-paragraph">イミディエイトウィンドウに値を出力するには、コード内に <code>Debug.Print</code> と書きます。これがデバッグ作業の基本中の基本です。</p>



<h3 class="wp-block-heading"><span id="toc8">変数の値を出力する</span></h3>



<p class="wp-block-paragraph">もっともシンプルな使い方から見ていきましょう。</p>



<pre class="wp-block-code"><code>Sub DebugPrintBasic()
    Dim total As Long '--- 合計値 ---
    total = 100 + 200
    Debug.Print total
End Sub</code></pre>



<p class="wp-block-paragraph">このコードを実行すると、イミディエイトウィンドウに <code>300</code> と表示されます。MsgBoxと違ってダイアログは出ないので、マクロはそのまま最後まで走ります。</p>



<p class="wp-block-paragraph">文字列と組み合わせると、さらに見やすくなります。</p>



<pre class="wp-block-code"><code>Sub DebugPrintWithLabel()
    Dim price As Long '--- 商品価格 ---
    Dim tax As Long   '--- 消費税額 ---
    price = 1000
    tax = price * 0.1
    Debug.Print &quot;税込価格: &quot; &amp; price + tax
End Sub</code></pre>



<p class="wp-block-paragraph">ラベルを付けておくと、何の値が出力されたのか一目で分かりますね。<a href="https://mashukabu.com/excel-vba-variable-explanation/">VBA変数の使い方</a>を復習したい方はそちらもチェックしてみてください。</p>



<h3 class="wp-block-heading"><span id="toc9">複数の値を1行に並べる（;と,の違い）</span></h3>



<p class="wp-block-paragraph">Debug.Printでは、セミコロン（<code>;</code>）やカンマ（<code>,</code>）で複数の値を1行にまとめて出力できます。ただし、それぞれ挙動が違います。</p>



<pre class="wp-block-code"><code>Sub DebugPrintSeparator()
    '--- セミコロン：直後に続けて出力 ---
    Debug.Print &quot;A&quot;; &quot;B&quot;; &quot;C&quot;
    '--- 出力結果: ABC

    '--- カンマ：タブ区切りで出力 ---
    Debug.Print &quot;A&quot;, &quot;B&quot;, &quot;C&quot;
    '--- 出力結果: A          B          C
End Sub</code></pre>



<p class="wp-block-paragraph">セミコロンは値を詰めて並べたいときに使います。カンマは14文字間隔のタブ位置に揃えるので、表のように整列させたいときに便利です。</p>



<p class="wp-block-paragraph">もう一つ覚えておきたいのが、<strong>行末のセミコロン</strong>です。</p>



<pre class="wp-block-code"><code>Sub DebugPrintNoBreak()
    Debug.Print &quot;合計: &quot;;
    Debug.Print 12345
    '--- 出力結果: 合計: 12345（1行にまとまる） ---
End Sub</code></pre>



<p class="wp-block-paragraph">行末にセミコロンを付けると改行されません。次のDebug.Printの出力が同じ行に続きます。</p>



<h3 class="wp-block-heading"><span id="toc10">ループ内で使う</span></h3>



<p class="wp-block-paragraph">Debug.Printが本領を発揮するのはループ処理です。MsgBoxだと繰り返しのたびにOKボタンを押さなければいけませんが、Debug.Printならまとめて確認できます。</p>



<pre class="wp-block-code"><code>Sub DebugPrintLoop()
    Dim i As Long      '--- ループカウンタ ---
    Dim ws As Worksheet '--- 対象シート ---
    Set ws = ActiveSheet

    For i = 2 To 10
        Debug.Print &quot;行&quot; &amp; i &amp; &quot;: &quot; &amp; ws.Cells(i, 1).Value
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">実行すると、イミディエイトウィンドウに以下のように出力されます。</p>



<pre class="wp-block-code"><code>行2: 田中
行3: 鈴木
行4: 佐藤
...</code></pre>



<p class="wp-block-paragraph">一覧で見られるので、「どの行にどんな値が入っているか」をすばやく把握できます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>イミディエイトウィンドウには約200行までしか保持されません。古い出力は上から順に消えていきます。大量のデータを確認したい場合はファイルへの書き出しも検討しましょう。また、1行あたりの最大文字数は1,023文字です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">イミディエイトウィンドウを電卓として使う</span></h2>



<p class="wp-block-paragraph">Debug.Printはコード内に書くものですが、イミディエイトウィンドウには<strong>直接コマンドを打ち込む</strong>こともできます。これがとても便利なんです。</p>



<h3 class="wp-block-heading"><span id="toc12">?（クエスチョン）で即計算・即確認</span></h3>



<p class="wp-block-paragraph">イミディエイトウィンドウに <code>?</code> と入力してEnterを押すと、その場で式を評価して結果を返してくれます。<code>?</code> は <code>Debug.Print</code> の省略形です。</p>



<pre class="wp-block-code"><code>?1+2+3
 6

?Format(Now, &quot;yyyy/mm/dd&quot;)
2026/03/28

?Len(&quot;イミディエイトウィンドウ&quot;)
 12</code></pre>



<p class="wp-block-paragraph">VBAの関数をそのまま使えるので、ちょっとした計算や動作確認に最適です。電卓代わりに使っている方も多いですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">マクロ実行中断後に変数値を調べる</span></h3>



<p class="wp-block-paragraph">ブレークポイントやStopでマクロを一時停止してみましょう。イミディエイトウィンドウから変数の中身を直接確認できます。</p>



<pre class="wp-block-code"><code>?myVariable
 256

?ws.Name
Sheet1</code></pre>



<p class="wp-block-paragraph">さらに、値を<strong>書き換える</strong>こともできます。</p>



<pre class="wp-block-code"><code>myVariable = 999</code></pre>



<p class="wp-block-paragraph">これを入力してEnterを押すと、変数の値がその場で変わります。「もしこの値だったらどうなるか」を試したいときに重宝します。そのまま F5 を押せば、書き換えた値で処理が再開されます。</p>



<h3 class="wp-block-heading"><span id="toc14">ワンライナーでシートを操作する</span></h3>



<p class="wp-block-paragraph">イミディエイトウィンドウからは、シートの操作もできます。わざわざマクロを書かなくても、1行で済む処理ならここで実行してしまいましょう。</p>



<pre class="wp-block-code"><code>Range(&quot;A1&quot;).Value = &quot;テスト&quot;

ActiveSheet.Name = &quot;集計結果&quot;

?Worksheets.Count
 3</code></pre>



<p class="wp-block-paragraph"><code>?</code> を付ければ戻り値が表示され、<code>?</code> なしならステートメントとして実行されます。プロシージャの呼び出しもできます。</p>



<pre class="wp-block-code"><code>Call MySub

MyFunction 100, 200</code></pre>



<p class="wp-block-paragraph">テスト用のプロシージャをサッと呼び出せるので、動作確認の効率がぐんと上がります。</p>



<h2 class="wp-block-heading"><span id="toc15">Debug.Assertでエラーを早期に検出する</span></h2>



<p class="wp-block-paragraph">Debugオブジェクトには、Printのほかにもう一つ <strong>Assert</strong> というメソッドがあります。Debug.Assertを使うと、「この条件は必ず成り立つはず」というチェックをコードに埋め込めます。</p>



<h3 class="wp-block-heading"><span id="toc16">Debug.Assertの書き方と動作</span></h3>



<p class="wp-block-paragraph">Debug.Assertには、True/Falseを返す式を渡します。</p>



<pre class="wp-block-code"><code>Sub AssertExample()
    Dim count As Long '--- 処理件数 ---
    count = WorksheetFunction.CountA(Range(&quot;A:A&quot;)) - 1

    '--- データが1件以上あることを保証 ---
    Debug.Assert count &gt; 0

    Debug.Print count &amp; &quot;件のデータを処理します&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">渡した式が <strong>Trueのとき</strong> は何も起こりません。マクロはそのまま続行します。</p>



<p class="wp-block-paragraph"><strong>Falseのとき</strong> はマクロが一時停止し、ブレークモードに入ります。該当行が黄色くハイライトされるので、「ここで想定外の状態が起きた」とすぐ気づけます。</p>



<p class="wp-block-paragraph">注意点として、Debug.Assertは<strong>短絡評価をしません</strong>。たとえば以下の書き方は危険です。</p>



<pre class="wp-block-code"><code>'--- NG: objがNothingだとエラーになる ---
Debug.Assert Not obj Is Nothing And obj.Value &gt; 0

'--- OK: 条件を分けて書く ---
Debug.Assert Not obj Is Nothing
Debug.Assert obj.Value &gt; 0</code></pre>



<p class="wp-block-paragraph">条件が複数あるときは、1つずつ分けて書くのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc17">Debug.PrintとAssertの使い分け</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>使うメソッド</th><th>具体例</th></tr></thead><tbody><tr><td>値を確認したい</td><td>Debug.Print</td><td>ループ中の変数をモニタリング</td></tr><tr><td>前提条件を保証したい</td><td>Debug.Assert</td><td>データが0件でないことを保証</td></tr><tr><td>エラーの原因を追跡したい</td><td>Debug.Print</td><td>If文の分岐をトレースする</td></tr><tr><td>想定外の状態を即座に止めたい</td><td>Debug.Assert</td><td>引数がマイナスでないことを保証</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Debug.Printは「観察するため」、Debug.Assertは「守るため」と覚えておくとよいでしょう。どちらもコンパイル済みのコードからは除去されるため、本番環境のパフォーマンスに影響しません。</p>



<h2 class="wp-block-heading"><span id="toc18">デバッグウィンドウ3種の比較と使い分け</span></h2>



<p class="wp-block-paragraph">VBEにはイミディエイトウィンドウ以外にも、<strong>ローカルウィンドウ</strong>と<strong>ウォッチウィンドウ</strong>があります。この3つを使い分けると、デバッグの効率が大きく変わります。</p>



<h3 class="wp-block-heading"><span id="toc19">イミディエイト・ローカル・ウォッチの違い一覧</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>イミディエイト</th><th>ローカル</th><th>ウォッチ</th></tr></thead><tbody><tr><td>表示する情報</td><td>Debug.Printの出力 / 手動入力の結果</td><td>現スコープの全変数</td><td>指定した変数・式</td></tr><tr><td>操作のタイミング</td><td>実行中・中断中・停止中</td><td>中断中のみ</td><td>中断中のみ</td></tr><tr><td>情報の更新</td><td>手動（コードまたは入力）</td><td>ブレーク時に自動</td><td>ブレーク時に自動</td></tr><tr><td>値の書き換え</td><td>可能（直接入力）</td><td>可能（ダブルクリック）</td><td>不可</td></tr><tr><td>コード実行</td><td>可能（1行コマンド）</td><td>不可</td><td>不可</td></tr><tr><td>スコープまたぎ</td><td>可能</td><td>現スコープのみ</td><td>可能（条件ブレーク設定も可）</td></tr><tr><td>ショートカット</td><td>Ctrl + G</td><td>表示メニューから</td><td>表示メニューから</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">それぞれ詳しく知りたい方は、<a href="https://mashukabu.com/excel-vbe-local-window-explanation/">ローカルウィンドウの使い方</a>と<a href="https://mashukabu.com/excel-vbe-watch-window-explanation/">ウォッチウィンドウの使い方</a>の記事も参考にしてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc20">どのシーンでどれを使うか</span></h3>



<p class="wp-block-paragraph">迷ったときの目安をまとめます。</p>



<ul class="wp-block-list"><li><strong>「この変数、今いくつ？」をサッと調べたい</strong> → イミディエイトウィンドウで <code>?変数名</code></li><li><strong>プロシージャ内の変数を全部まとめて確認したい</strong> → ローカルウィンドウ</li><li><strong>特定の変数が条件を満たしたら自動停止させたい</strong> → ウォッチウィンドウ</li><li><strong>ループの中身を一覧で見たい</strong> → イミディエイトウィンドウで Debug.Print</li><li><strong>複数プロシージャにまたがる変数を追いかけたい</strong> → ウォッチウィンドウ</li></ul>



<p class="wp-block-paragraph">基本はイミディエイトウィンドウで十分です。「全変数を一覧したい」「条件ブレークを使いたい」など特別な目的があるときに、ローカルやウォッチを併用する考え方でOKです。</p>



<h2 class="wp-block-heading"><span id="toc21">実務シナリオ別の使い方</span></h2>



<p class="wp-block-paragraph">ここからは、実際の業務でよくある場面でのDebug.Print活用法を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc22">ループが途中で止まる原因を調べたい</span></h3>



<p class="wp-block-paragraph">ループが途中で終了してしまう場合、各ステップの値を出力すれば原因を特定しやすくなります。</p>



<pre class="wp-block-code"><code>Sub DebugLoopIssue()
    Dim ws As Worksheet    '--- 対象シート ---
    Dim lastRow As Long    '--- 最終行 ---
    Dim i As Long          '--- ループカウンタ ---
    Dim cellValue As Variant '--- セルの値 ---

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    Debug.Print &quot;最終行: &quot; &amp; lastRow

    For i = 2 To lastRow
        cellValue = ws.Cells(i, 1).Value
        Debug.Print &quot;行&quot; &amp; i &amp; &quot; 値=&quot; &amp; cellValue &amp; _
                    &quot; 型=&quot; &amp; TypeName(cellValue)

        '--- 空白行で処理終了 ---
        If IsEmpty(cellValue) Then
            Debug.Print &quot;★ 行&quot; &amp; i &amp; &quot;が空白のため終了&quot;
            Exit For
        End If

        '--- ここに本来の処理を書く ---
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">出力結果を見れば「何行目でどんな値だったか」「なぜループが終わったのか」がすぐ分かります。TypeNameで型も一緒に出力しているのがポイントです。数値に見える文字列が原因だった、というケースも見逃しません。</p>



<h3 class="wp-block-heading"><span id="toc23">If文が想定通り分岐しているか確認したい</span></h3>



<p class="wp-block-paragraph">条件分岐が複雑になると、どのルートを通ったのか分からなくなりがちです。各分岐にDebug.Printを仕込んで、通過ルートを可視化しましょう。</p>



<pre class="wp-block-code"><code>Sub DebugIfBranch()
    Dim sales As Long   '--- 売上金額 ---
    Dim rank As String   '--- 評価ランク ---
    Dim ws As Worksheet  '--- 対象シート ---
    Dim i As Long        '--- ループカウンタ ---
    Dim lastRow As Long  '--- 最終行 ---

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To lastRow
        sales = ws.Cells(i, 2).Value

        If sales &gt;= 1000000 Then
            rank = &quot;A&quot;
            Debug.Print &quot;行&quot; &amp; i &amp; &quot; → Aランク（売上: &quot; &amp; sales &amp; &quot;）&quot;
        ElseIf sales &gt;= 500000 Then
            rank = &quot;B&quot;
            Debug.Print &quot;行&quot; &amp; i &amp; &quot; → Bランク（売上: &quot; &amp; sales &amp; &quot;）&quot;
        Else
            rank = &quot;C&quot;
            Debug.Print &quot;行&quot; &amp; i &amp; &quot; → Cランク（売上: &quot; &amp; sales &amp; &quot;）&quot;
        End If

        ws.Cells(i, 3).Value = rank
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">イミディエイトウィンドウの出力を見れば、全行がどのランクに振り分けられたか一覧で確認できます。「100万以上なのにBランクになっている」といった不具合も、一目で発見できますよ。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">VBA If文の使い方</a>の記事も合わせて読むと、条件分岐の基本から復習できます。</p>



<h2 class="wp-block-heading"><span id="toc24">まとめ</span></h2>



<p class="wp-block-paragraph">イミディエイトウィンドウの使い方を振り返ります。</p>



<ul class="wp-block-list"><li><strong>Ctrl + G</strong> でVBE上に表示できる</li><li><strong>Debug.Print</strong> で変数値やメッセージを出力する</li><li>セミコロン（<code>;</code>）で直後出力、カンマ（<code>,</code>）でタブ区切り</li><li><strong>?（クエスチョン）</strong> で電卓のように即計算できる</li><li>ブレーク中に変数の値を確認・書き換えもできる</li><li><strong>Debug.Assert</strong> で前提条件のチェックを埋め込める</li><li>ローカル・ウォッチウィンドウと併用するとさらに効率アップ</li></ul>



<p class="wp-block-paragraph">MsgBoxでの確認から卒業するだけで、デバッグのスピードは格段に上がります。まずは普段のコードに <code>Debug.Print</code> を1行追加するところから始めてみてくださいね。</p>



<p class="wp-block-paragraph">VBAのスキルをさらに伸ばしたい方は、<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBAの学習順番ロードマップ</a>もぜひ参考にしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vbe-immediate-window-explanation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
