企業研修講師派遣のBESTグループ
出張パソコン教室ITスクール
webコンサルティングスクール
パソコンの家庭教師BEST

Home Excel(エクセル) VBAマクロ開発を効率的に行う方法(イミディエイトウィンドウ・続編)

以前投稿した「VBAマクロ開発を効率的に行う方法(イミディエイトウィンドウ編)」の続編です。

1324389785

※以前の記事はこちら
http://www.office-kaiketsu.com/%e3%81%9d%e3%81%ae%e4%bb%96/vba%e3%83%9e%e3%82%af%e3%83%ad%e9%96%8b%e7%99%ba%e3%82%92%e5%8a%b9%e7%8e%87%e7%9a%84%e3%81%ab%e8%a1%8c%e3%81%86%e6%96%b9%e6%b3%95%e3%82%a4%e3%83%9f%e3%83%87%e3%82%a3%e3%82%a8%e3%82%a4%e3%83%88/

以前の投稿では、イミディエイトウィンドウに直接「? 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」を実行することで、効率的にデバッグ(バグの修正)を行うことができるようになります。

ご質問や感想は上記からコメントをお願い致します

返信を残す