はじめに
VBAの Debug.Print
は、実行するたびにイミディエ-トウィンドウで自動的に改行されるのがデフォルトの動作です。しかし、ループ処理などで、「複数のデータを、改行せずに一行にまとめて表示したい」という場面もよくあります。
Debug.Print
ステートメントの最後に、特定の記号(セミコロン ;
またはカンマ ,
)を付け加えることで、この改行の動作を制御し、出力を同じ行に続けることができます。
この記事では、Debug.Print
での改行を抑制し、出力のレイアウトを調整するためのテクニックを解説します。
1. セミコロン (;
) を使って、続けて出力する
Debug.Print
の最後にセミコロン (;
) を付けると、改行が抑制され、次の Debug.Print
の出力が、現在の出力の直後から始まります。
サンプルコード
' セミコロン(;)を使って、出力を同じ行に続ける
Sub PrintOnSameLineWithSemicolon()
Dim i As Long
Debug.Print "処理結果: "; ' ← セミコロンで改行を抑制
For i = 1 To 5
Debug.Print i & "..."; ' ← ループの各回で改行を抑制
Next i
Debug.Print "完了" ' ← 最後はセミコロンなしで改行
End Sub
実行結果(イミディエイトウィンドウ)
処理結果: 1...2...3...4...5...完了
解説: Debug.Print
の最後に ;
を付けることで、カーソルが次の行に移らず、同じ行に留まり続けます。最後の Debug.Print "完了"
には ;
が付いていないため、ここで初めて改行されます。
2. カンマ (,
) を使って、タブ区切りで出力する
Debug.Print
で出力する項目をカンマ (,
) で区切ると、タブのように一定の間隔(プリントゾーン)を空けて、同じ行に出力されます。
サンプルコード
' カンマ(,)を使って、タブ区切りで出力する
Sub PrintOnSameLineWithComma()
Dim i As Long
' ヘッダーを出力
Debug.Print "ID", "商品名", "価格"
' データを出力
Debug.Print 1, "商品A", 1200
Debug.Print 2, "長い名前の商品B", 850
End Sub
実行結果
ID 商品名 価格
1 商品A 1200
2 長い名前の商品B 850
解説: カンマを使うと、次のプリントゾーン(おおよそ14文字ごとの区切り)の先頭にカーソルが移動します。これにより、各項目の開始位置が揃い、表のような形式で見やすく出力できます。
3. Debug.Print
だけで改行する
引数を何も指定せずに Debug.Print
を実行すると、**空白行(改行)**を挿入できます。出力結果のセクションを分ける際などに便利です。
サンプルコード
Sub PrintBlankLine()
Debug.Print "レポートセクション1"
Debug.Print ' 空白行を挿入
Debug.Print "レポートセクション2"
End Sub
実行結果
レポートセクション1
レポートセクション2
まとめ
今回は、Debug.Print
の出力を整形するための、改行制御のテクニックを解説しました。
- 最後に何も付けない: 通常通り、出力後に改行する。
- 最後にセミコロン (
;
): 改行せず、カーソルを直後に留める。 - 項目をカンマ (
,
) で区切る: 改行せず、次のプリントゾーンにカーソルを移動させる。 - 引数なしの
Debug.Print
: 空白行を挿入する。
これらの挙動を使い分けることで、イミディエイトウィンドウのデバッグ出力を、より構造化された、読みやすいものにすることができます。