2016年7月5日火曜日

【VBAリファレンス】ステップイン機能とブレークポイントを上手に使ってデバック作業を制する。

コーディング作業にも慣れてくると
恐れることなく、バンバン長いコードを書いていけるようになります。

そうすると、いつの間にかこんなに長いコードを書いていたのかと
自分で自分を褒めたくなる半面、ちょっと怖くなります。

特に、集中して一気に記述して
いざ実行!ってボタンを押して
即エラー表示がされたりします。
私の場合よくやるのは、変数の宣言し忘れとか
If文のEndIfの記述忘れという、クソツマンネーエラーが多いので
そんな時は、周りの誰にもばれない表情で
シレっと修正してコードを実行します。

しかし、中にはエラーの原因、理由などが
よくわからなく、何度も同じ箇所でデバック対応を余儀なくされることがあります。

短いコードならまだしも、先述したとても長いコードを書いてしまったときは
恐怖を超えて狂気すら感じます。

私の場合、1回の実行で完了まで10~30分時間を要するコードを書いたり
しかも、エラーは出てないが期待している
処理結果が得られないことなどもあり、そういった場合
どこが間違っているか分からない事象が発生した場合
文字通り頭を抱えてしまいます。

毎回、スタートから完了までを通すわけには行かないので
そういったときは、まずある程度の箇所に目処を付けたうえで
ステップインで進めます。

ステップインとは、そのプロシージャの1行目から
1行ずつコードを実行していく方法です。

まず、サンプルコードです。
------------------------------------
Sub test()

Dim i As Long, j As Long

'掛け算の結果を出すFor文
For i = 1 To 9
    For j = 1 To 9
 
    Cells(j, i) = i * j
 
    Next j
Next i

End Sub
------------------------------------
実行結果は以下の通りとなります。





























これをステップインで実行する場合
コードの記述まで行った後
画面の開発のタブマクロ作成したプロシージャ名を選択ステップ インをクリックします。




























そうすると、VBE画面が表示され、
現在の進行箇所が黄色く表示されます。
そして、次の行に移動するにはファンクションの8番(F8キー)を押します。

実行最初の画面


F8キーを1回押した状態


F8キーを2回押した状態


F8キーを押しっぱなしにすると、
ものすごいスピードでブルブルン!って実行状態を見ることが出来ます。

一つ一つの実行結果を確認するには
もってこいの機能です。
もちろん、Excelの画面を開きながらやれば
もちろん画面反映を確認しながら進めることも出来ます。

また、Forの動きなどは、
このステップインを見ていると、どういった動きをしているのか
目で確認できるので、非常に良いと思います。


ただし、先述したとてつもなく長いコードを記述した際
しかも、確認したい箇所は最後の方
その上、それまでの箇所にFor文を連掛けしているなど
不都合の女神に微笑まれた場合は
任意の場所までは一気に実行するという方法もあるのです。

それはブレークポイントの設定です。

下図赤枠内ジャンプさせたい列辺り


クリックすると、赤黒い●マークがつきます。


ステップイン実行後、このブレークポイントを実行すると
その箇所までは、通常のコードを実行したスピードで
コードが実行されます。

その後、F8を押せば、1行ずつステップイン作業が実行されます。
その後、すべてのコードを実行する場合は
F5(実行ボタン)か四角のリセットボタンを押せば
作業の継続かストップを選択できます。

是非、この機能を活用して無駄のないデバック作業を行ってください。

私の場合、デバック作業のいらない完璧なコードばかりではなく
たくさんのエラーを経験した方が
よりよりコードが書けるようになると信じてます。



0 件のコメント:

コメントを投稿