【VBA】イミディエイトウィンドウの出力を見やすく整形する方法 (Debug.Print)

目次

はじめに

VBAでマクロのデバッグ(動作確認やバグ修正)を行う際、Debug.Print を使ってイミディエイトウィンドウに変数の値を出力するのは、非常に有効な手段です。しかし、複数の値をただ連結して表示しただけでは、文字列の長さがバラバラで、結果がずれて読みにくくなってしまいます。

Debug.Print には、出力を綺麗に整列させるための簡単な方法がいくつか用意されています。この記事では、イミディエイトウィンドウの出力結果を、表のように綺麗に整えて表示するための3つのテクニックを解説します。


1. カンマ (,) を使って区切る

Debug.Print で出力したい項目を、& ではなくカンマ (,) で区切ると、VBAが自動的にタブのような一定の間隔を空けて表示してくれます。これは最も手軽な方法です。

サンプルコード

' カンマ区切りでDebug.Printを実行する
Sub PrintWithCommas()
    Debug.Print "商品名", "単価", "数量", "合計"
    Debug.Print "-----------", "----", "----", "----"
    Debug.Print "リンゴ", 120, 5, 600
    Debug.Print "パイナップル", 600, 2, 1200
End Sub

実行結果(イミディエイトウィンドウ)

商品名        単価          数量          合計
-----------   ----        ----        ----
リンゴ        120         5           600
パイナップル  600         2           1200

解説: 各項目が、おおよそ14文字ごとのタブ位置に合わせて表示されます。手軽ですが、細かい位置の調整はできません。


2. Spc() 関数でスペースを挿入する

Spc(n) 関数は、指定した数 (n) だけの半角スペースを挿入します。文字列の長さが分かっている場合に、後続のテキストの位置を揃えるのに便利です。

サンプルコード

' Spc()関数を使って表示位置を調整する
Sub PrintWithSpcFunction()
    Debug.Print "ID" & Spc(4) & "ステータス"
    Debug.Print "--" & Spc(4) & "----------"
    
    Dim id1 As String, id2 As String
    id1 = "A-01"
    id2 = "B-1234"
    
    ' id1の後ろに挿入するスペースの数を計算
    Debug.Print id1 & Spc(6 - Len(id1)) & "完了"
    ' id2の後ろに挿入するスペースの数を計算
    Debug.Print id2 & Spc(6 - Len(id2)) & "処理中"
End Sub

実行結果

ID    ステータス
--    ----------
A-01  完了
B-1234処理中

解説: "ID""ステータス" の間に Spc(4) を入れることで、4つのスペースを挿入しています。しかし、id1id2 のように元々の文字数が違うと、Spc で挿入するスペースの数を調整しないと、開始位置がずれてしまいます(この例では B-1234 が長すぎてずれています)。


3. Tab() 関数で絶対位置を指定する

Tab(n) 関数は、行の先頭から n 文字目の位置までカーソルを移動(タブ移動)させます。これが最も確実に見栄えを揃えることができる方法です。

サンプルコード

' Tab()関数を使って表示位置を揃える
Sub PrintWithTabFunction()
    Debug.Print "商品コード", "商品名", "在庫数"
    Debug.Print Tab(15); "--------"; Tab(30); "------" ' Tabの後ろはセミコロン(;)
    
    ' Tab(15)で15文字目に、Tab(30)で30文字目に移動
    Debug.Print "A-001"; Tab(15); "高機能キーボード"; Tab(30); 50
    Debug.Print "B-1024"; Tab(15); "ワイヤレスマウス"; Tab(30); 120
    Debug.Print "C-512"; Tab(15); "Webカメラ"; Tab(30); 35
End Sub

実行結果

商品コード      商品名          在庫数
              --------      ------
A-001         高機能キーボード    50
B-1024        ワイヤレスマウス    120
C-512         Webカメラ       35

解説:

  • Tab(15) と記述すると、行の先頭から15文字目の位置にカーソルが移動し、そこから次のテキストが出力されます。
  • Spc() とは異なり、Tab()絶対的な桁位置を指定するため、前の文字列の長さに影響されずに、各項目の開始位置を完璧に揃えることができます。
  • Tab 関数を使う場合、区切り文字は & ではなくセミコロン (;) を使うのが一般的です。

まとめ

今回は、Debug.Print の出力を整形するための3つのテクニックを解説しました。

  • 手軽さ重視ならカンマ (,) 区切り: 大まかな位置で揃えたい場合に。
  • スペースの数を指定したいなら Spc(): 細かい調整が可能だが、元の文字列長に依存する。
  • 確実に見栄えを揃えるなら Tab(): 絶対的な桁位置を指定できるため、表形式の出力に最適。

デバッグ作業の効率は、情報の見やすさに大きく左右されます。これらのテクニックを使い分けて、ログや変数の値を見やすく出力する癖をつけることをお勧めします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次