はじめに
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つのスペースを挿入しています。しかし、id1
と id2
のように元々の文字数が違うと、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()
: 絶対的な桁位置を指定できるため、表形式の出力に最適。
デバッグ作業の効率は、情報の見やすさに大きく左右されます。これらのテクニックを使い分けて、ログや変数の値を見やすく出力する癖をつけることをお勧めします。