[VBA] Debug.Print でイミディエイトウィンドウに結果を表示します

Debug.Print とイミディエイトウィンドウ

 自分でマクロを作ってみて「動作を試したいな」てときに、MsgBox関数を使う方法もありますけど、実行するときにダイアログボックス画面が現れて、ちょっと煩わしくなることがありますね。そんなときは Debug.Print を使うと便利です。たとえば

 Sub MyDebug1()

 Debug.Print "今日はいい天気ね~"

 End Sub

というマクロを実行すると、VBE画面の一番下にある イミディエイトウィンドウ

 今日はいい天気ね~

と表示されますよ。

 Debug.Printでイミディエイト画面に結果を表示

 これは Debugオブジェクト、つまりイミディエイトウィンドウに対して Printメソッド を使って「これを書きなさいね~」と命じているわけです。すぐに実行結果を確認できるので、この機能は重宝しますよ~。できれば初級段階で覚えておきたい基本ね~。
 

繰返し処理の結果をイミディエイトウィンドウに表示します

 この Debug.Print は、特に For...Next などで実行する繰り返し処理を確認
するときによく使われます。たとえば次のようなコードを書いてみましょ~。

 Sub MyDebug2()

 Dim i As Integer

 For i = 1 To 3

 Debug.Print i

 Next i

 End Sub

 自然数を 1 から 3 まで順番に表示させるというマクロです。これを実行すると

 1
 2
 3

というように数字が縦に並んでしまうのね~。このマクロは数字が 3 つだからまだいいけど、10 個も 100 個も縦に並んだら見づらいことこのうえないのね~。というわけで、こんなときは i の後ろにセミコロン(;)をつけてあげましょ~。

 Sub MyDebug3()

 Dim i As Integer

 For i = 1 To 3

 Debug.Print i;

 Next i

 End Sub

 これを実行すると

 1 2 3

というように改行せずに横並びに表示してくれますよ~。他には i の後ろにカンマ(,)をつけるという手もあります。

 Sub MyDebug4()

 Dim i As Integer

 For i = 1 To 3

 Debug.Print i,

 Next i

 End Sub

 これを実行すると

 1   2   3

というように数字の間にタブが入るのね~。ちょっと文字同士の間隔が空きすぎるので、こばとはあんまり好きじゃないけど、まあこのへんはお好みでどうそ~。
 

敢えて改行する

 逆にちょっと長い文章だったりすると、むしろ途中で改行して表示したくなる場合もあります。Excel ではセルの中で改行するときに Alt + Enter と入力しますけど、実はそのときに vbLf という改行コードが挿入されているのです。だからマクロでも vbLf を入れてやれば改行できるわけです。

 Sub MyDebug5()

 Debug.Print "こばとちゃんはかわいいな"; vbCrLf; "こばとちゃんは美人だな"

 End Sub

 これを実行すると

 こばとちゃんはかわいいな
 こばとちゃんは美人だな

というように表示されます。しかーし! こんな怪しげで煩わしい記号をわざわざ入れるぐらいなら、最初から

 Sub MyDebug6()

 Debug.Print "こばとちゃんはかわいいな"
 Debug.Print "こばとちゃんは美人だな"

 End Sub

と書いたほうがずっと読みやすいコードになるのねー。プログラミングはわかりやすくシンプルに書くのが大切ね~。え? それはいいけど、表示される文章が気になる? そうですか? 「こばとちゃんはかわいい」という当たり前の事実を書いただけなんですけどね~。 ≫ VBA の技術

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)