Excel VBAでイミディエイトウィンドウに情報を表示する:Debug.print

VBAでイミディエイトウインドウに情報を表示する方法について説明します。プログラムの途中経過などを把握したり、デバッグを行ったりするときに有効に活用できます。

Debug.Print の使い方

Debug.Print を実行することで、変数の値をイミディエイトウインドウに表示できます。

Debug.Print の構文は以下の通りです。

Debug.Print 変数または式

Debug.Print で表示できるものは、文字列や数値などテキストで表現できるものに限られます。シートやセルのオブジェクトを直接指定することはできません。

以下は Debug.Print を使用した例です。

Dim myStr As String      ' 変数(文字列型)
Dim myNum As Long        ' 変数(数値型)
Dim mySheet As Worksheet ' オブジェクト変数
Dim A(0) As Variant      ' 変数(配列)

'値の代入
myStr = "TEST"
myNum = 100
Set mySheet = ThisWorkbook.Sheets(1)
A(0) = 200

' イミディエイトウィンドウに表示
Debug.Print myStr           ' 文字列型変数
Debug.Print myNum           ' 数値型変数
Debug.Print mySheet.Name    ' オブジェクト変数
Debug.Print A(0)            ' 配列要素
' Debug.Print A             ' 配列そのもの「型が一致しません」とエラーが出ます

変数は、そのまま指定することで表示することができます。オブジェクト変数は、テキスト表示できるプロパティ(上記の例だと.Name)を指定すれば可能です。ただし、mySheet のみではエラーとなります。配列については、インデックスを指定して要素を表示することは可能ですが、配列オブジェクト自体はテキストで表示できないのでエラーとなります。

Debug1

配列 A を表示するために Debug.print A を実行すると、以下のようなエラーが発生してしまいます。

Debug2

ステップ実行中に Debug.Print

コード実行中に限られますが、Debug.Print はイミディエイトウインドウに直接記述して使用することもできます。

たとえば上記コードの場合、 myStr = "TEST" を実行した後であれば、ステップ実行中にイミディエイトウインドウに Debug.Print myStr を入力し Enter を押下すれば、以下のように変数の値を表示できます。

また、?myStr のように、?[変数名]  の後に Enter を押下しても同じ結果が得られます。

Debug4

エラーでコードが止まってしまったときなど、変数の値を確認するのに便利です。


イベント