VBAマクロ開発を効率的に行う方法(イミディエイトウィンドウ・続編)
以前投稿した「VBAマクロ開発を効率的に行う方法(イミディエイトウィンドウ編)」の続編です。
以前の投稿では、イミディエイトウィンドウに直接「? Cells(1,1).Value」等をを入力し、変数の値やシートの値を表示させることを学びましたが、このイミディエイトウィンドウへの表示は、実はプログラムから出力することが可能となっています。どのようなことなのか、以下のプログラムを見てみてください。
For i = 1 To 100
If Left(Cells(i, 1).Value, 4) = “株式会社” Or Left(Cells(i, 1).Value, 4) = “合同会社” Or Left(Cells(i, 1).Value, 4) = “有限会社” Then
Cells(i, 2).Value = Cells(i, 1).Value & “御中”
Else
Cells(i, 2).Value = Cells(i, 1).Value & “様”
End If
Next
このプログラムでは、A列の名前の先頭が株式会社、合同会社、有限会社であった場合、B列にA列の内容に”御中”を追加し、そうでない場合は”様”を追加します。
さて、ここでシートのデータを見るとどうも会社のデータのようだが、B列で”様”が追加されている行があったとしましょう。
このような場合は、for文の中のELSEに入った場合のA列の内容がどのようになっているかを見たくなるでしょう。ただしfor文のループを100行デバッグで見ていくのは大変です。そのような場合こそイミディエイト・ウィンドウが活用できます。下記のようにプログラムを追加します。(★の部分)
For i = 1 To 100
If Left(Cells(i, 1).Value, 4) = “株式会社” Or Left(Cells(i, 1).Value, 4) = “合同会社” Or Left(Cells(i, 1).Value, 4) = “有限会社” Then
Cells(i, 2).Value = Cells(i, 1).Value & “御中”
Else
Debug.Print i & “:” & Left(Cells(i, 1).Value, 4) ‘★
Cells(i, 2).Value = Cells(i, 1).Value & “様”
End If
Next
ELSEに入る場合に判定されているのは、Left(Cells(i, 1).Value, 4)の部分ですから、これがどのようになっているかを確かめるのです。
これでマクロを実行させると、イミディエイトウィンドウには下記のように出力されます。(※テストデータはご自身でA列に作成下さい。下記は例となります。)
10:鈴木一郎
11:田中次郎
23:□有限会 ←(注)□は空白を示しています
29:山田花子
・・・
これで23行目に、頭に余分な空白の入った”有限会社”があったためとすぐにわかります。
このように、プログラム内で「Debug.Print」を実行することで、効率的にデバッグ(バグの修正)を行うことができるようになります。