みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAで業務を快適にするテクニックについて、シリーズでお伝えしています。
前回はこちらの記事でした。
VBEの「コードの設定」についてと、そのオススメの設定についてお伝えしましたね。
さて、今回お題とするのはイミディエイトウィンドウです。
使ってます?
ということで、今回から何回かにわけて、初心者でも知っておきたいイミディエイトウィンドウの便利な活用法をお伝えします。
今回ですが、そのイミディエイトウィンドウを使う方法の超基本として、初心者のうちからぜひとも知っておいて欲しいDebug.Printの使い方についてお伝えします。
一行に複数の出力をする方法も丁寧に解説していますよ。
本記事は以下のYouTube動画とも連動していますので、合わせてご覧くださいませ。
では、行ってみましょう!
Debug.Printでイミディエイトウィンドウに出力する
まず、基本中の基本です。
DebugオブジェクトのPrintメソッドを使うことで、プロシージャの実行中に、変数やプロパティなどの値をイミディエイトウィンドウに出力することができます。
出力する式には、数値や文字列、日付などの直値、変数、プロパティ、計算式、関数などを指定することができます。
以下サンプルプログラムを実行してみて下さい。
Sub printImmediate()
Debug.Print 123
Debug.Print "Hello World"
Debug.Print #3/30/2017#
Debug.Print ThisWorkbook.Name
Dim number As Long
number = 5
Debug.Print number * number
Debug.Print InputBox("数字の100を入力してください")
End Sub
こちらは数値、文字列、日付、Nameプロパティ、計算式の結果、関数の返り値をそれぞれイミディエイトウィンドウに出力するというものですね。
実行すると以下のようにイミディエイトウィンドウに出力がされるはずです。
プロシージャの途中段階で、動作の確認をしたいときに、確認用の変数やプロパティなどの式を、Debug.Printをするのです。
これはもう絶対マスターの超基本ですよね。
Debug.Printで一行に複数の式を出力する方法
さて、そのDebug.Printですが、たくさん出力すると都度改行してしまうので、スクロールをしないと確認ができません。
例えば、1から100までイミディエイトウィンドウに出力するプログラムを作って実行すると
こんな風に、たっぷりの行をふんだんに使って出力されてしまいます。確認するのが大変ですよね。
そのために、Debug.Printで一行に複数の式を出力をする方法がいくつか用意されています。
セミコロンで同じ行に連続してDebug.Printする
まず、Debug.Printの出力する式の後にセミコロン「;」を付与してみましょう。
セミコロンはをつけてDebug.Printで出力すると、次の出力ポイントが改行されません。
例えば、このようなプログラムを作ります。
Sub countUp()
Dim i As Long, j As Long
For i = 1 To 100
Debug.Print i;
If i Mod 10 = 0 Then Debug.Print
Next i
End Sub
iをDebug.Printした際には次の出力ポイントを改行せず、10の倍数のときだけ改行をするようにします。
出力した結果はこちら。
ほら、見やすくなりますでしょ?
ちなみに、セミコロンの応用として
Sub printHello()
Debug.Print "Hello"; "World"; "!";
End Sub
という使い方もあります。何回か実行をしますと
このように改行されずに連続して出力されます。
文字列の連結にはアンパサンド「&」が使われますが、Debug.Printのときは好みでセミコロンを使うという手もあるというわけです。
カンマでタブを入れてDebug.Printする
もう一つの例として、Debug.Printの出力する式の後にカンマ「,」を付与する方法があります。
カンマを付与すると、次の出力ポイントにタブが入ります。
先ほどのプロシージャのセミコロンをカンマに変えてみましょう。
Sub countUp()
Dim i As Long, j As Long
For i = 1 To 100
Debug.Print i,
If i Mod 10 = 0 Then Debug.Print
Next i
End Sub
実行すると、以下のように出力されます。
等間隔ではないので若干気持ち悪いですが、タブが入っていると見やすいときも多いです。
例えば
Debug.Print Sheet1.Cells(i, 1).Address, value
などという使い方をすれば、出力先のアドレスとその値が一行にかつタブ空きで出力されるので、イミディエイトウィンドウでの視認での検証がしやすくなります。
まとめ
エクセルVBAで初心者から絶対に知っておくべきDebug.Printの使い方をお伝えしました。
Debug.Printは基本の使い方だけでなく、セミコロンやカンマなども組み合わせて利用することで、プログラムのテストやデバッグの捗り方が全く変わってきます。
ぜひ、ご活用下さいね。
次回は、イミディエイトウィンドウをコマンド入力ウィンドウとして利用するテクニックをお伝えします。
どうぞお楽しみに!