「エクセルVBA」デバッグにブレークポイントは必要です

( ノ゚Д゚)こんばんは!こんにちは!おやすみなさい!おはようございます! とっちーです。

 

 

VBAでコードを作成して、いざ実行!

 

「おやっ?」プログラムが止まらない~ってプログラムが暴走したことありませんか?

 

しかも、保存をしたのが、かれこれ時間がたっていたりして。

 

 

そんな、万が一の実行ミスの為に怪しいコードの手前でプログラムを停止してくれる「ブレークポイント」

 

今回は、その「ブレークポイント」の設定についてお伝えします。

 

 

新しいことにチャレンジするって素晴らしいと思います。

 

 

 

コードウインドウのインジケータ―バー

 

 

実は、プログラムを作成していく段階で、とってもありがたい表示物があるんです。

 

それは何かといいますと、「インジケータ―バー」っていいます。

 

VBEのコードウインドウに表示されているんです。

 

インジケータ―バーは、プログラムの修正や確認を行う際にとっても役に立つんです。

 

 

(えっちゃん)
インジケータ―バー表示してみるね

 

(はてな君)
うん

 

折角なので、表示しているフォームをダブルクリックして「コードウインドウ」を表示してみます。

 

フォームや作成したオブジェクトなどをダブルクリックすると「コードウインドウ」が表示されますので覚えておいてください。

 

 

(はてな君)
画面が変わったよ

 

(えっちゃん)
ここにプログラムを書いていくんだよ

 

 

 

(はてな君)
?なんか書いてある

 

Private Sub UserForm_Click()

End Sub

 

これは、今さっきフォームをダブルクリックして「コードウインドウ」を起動させたので自動的に記述されたものになります。

 

ちなみに、このコードだけでは動作などは一切しません。

 

Private Sub UserForm_Click()は、ユーザーフォームがクリックされたらどうするのか。

 

End Subとの間の空白部分に動かしたいプログラムが追加されたとき動作するようになります。

 

そして、最後にEnd Subでプログラムを終了させているんです。

 

 

 

ちなみにユーザーフォームをクリックしても現状は仕方がないので飛ばします。

 

 

コードウインドウの説明をしておきます。

 

上図、

コードウインドウの左上に表示されている「UserForm」の箇所は「オブジェクトボックス」といって選択された「オブジェクト」が表示されます。

Workbook、Worksheet、UserFormなどは、そのまま表示されます。

 

コマンドボタンやリストボックスなどはそれぞれのオブジェクト名が表示されます。

 

コードウインドウの右上に表示されている「Click」の箇所は「プロシージャボックス」といって選択された「オブジェクト」の動作関連が表示されます。

 

コードウインドウの左側に一見すると、しきりにしか見えない箇所が「インジケータ―バー」に

なります。

 

ブレークポイントの使い方

 

 

プログラムを作成したら100%動作しましたなんてこともあるかもしれませんが、エラーが起こったり追加したりするときに、プログラムを途中で停止することが出来るんですね。

 

その作業を便利にしてくれるのが「インジケーターバー」になるんです。

 

 

 

調べたいコードの手前の部分でプログラムを停止したい時に「インジケータ―バー」に「ブレークポイント」を設けてあげると、「ブレークポイント」でプログラムが停止してくれます。

 

(はてな君)
どんな時なの?

 

 

(えっちゃん)
プログラムを実行したら、正常動作してくれないときとか、止まらなくなったりしたときとか

 

 

(はてな君)
そっかぁ、プログラムの暴走を食い止めることが出来るんだね

 

(えっちゃん)
そうなんだ、だけどね確認したいコードの手前で止めちゃうからエラーコードの謎解きも残っちゃうんだけどね。

 

ブレークポイントは、処理を見直したい場所より以前の実行プログラムに設定をしないと止めることが出来ません。

 

例えば、変数の値を使ってシートを検索するとかのコードが違っていた場合には、Excelがココが違ってますよって教えてくれますが、

 

特に繰り返し分のDo~LoopなどはLoop後の実行プログラムにブレークポイントを設置しても、Do~Loopの終了判断基準を間違えていたら無限ループに陥ります。ExcelVBAは、ひたすら間違っている終了判断を追いかけてしまうからですね。

 

CTRL+BREAKでも止まりません。暴走です。

 

 

なので、必ずDo~Loopなど無限ループに陥るようなコードの場合は、プログラムを実行する前に、暴走の疑いがあるコード以前の確実に暴走しない実行プログラムのいずれかにブレークポイントを設置して、コードの確認作業に入りましょう。

 

 

 

「インジケータ―バー」は、このようにして有効活用してみましょう。

 

もし不要ならば非表示にもできます。

 

 

VBEのツールを選択してメニューを表示すると「オプション」項目があります。

 

「オプション」を選択してみましょう。

 

 

VBEの設定ダイアログになります。

 

コードの色とかの設定もできます。「インジケータ―バー」の表示設定はエディターの設定項目で設定が出来ます。

 

右側の項目に「インジケータ―バー」があります。☑に✅が入っていますので❒にしてみましょう。最後にOKを選択するとVBEの画面に戻ります。

 

 

 

(はてな君)
あぁ、インジケータ―バーがなくなってる!!えっちゃん、インジケータ―バーほしいよ。プログラムの修正のとき便利だから

 

(えっちゃん)
でしょう、さっきの☑を外したところ、もう一度☑を入れると表示されるから、表示するようにしておこうね、はてなくん

 

(はてな君)
うん

 

コードウインドウの掃除

 

コードウインドウに、誤って作成したコードや必要でなくなったコードはなるべく残さないようにしましょう。すっきりさせておくことをおススメします。

コードウインドウにコードがない場合、プロシージャボックスには、Declarationsって表示されます。参考にしてください。

 

最後にコードウインドウを閉じておきましょう。

 

VBEメニューのヘルプの右側にある×印をクリックしましょう。

 

「コードウインドウ」を閉じることが出来ます。

 

まとめ

 

今回は、インジケータ―バーのありがたみについてお伝えしてみました。

 

ブレークポイントが設置できるって大変、ありがたいです。

 

もし、ブレークポイントが設置できなければ、長いコードだったら、ひたすら確認ですね。

 

そんなときのために、ぜひプログラム実行前のブレークポイントでの確認作業をお忘れなく。

 

今日も楽しくエクセルが使えたら、幸せです。

 

自分に合ったお気に入りのスタイルでエクセルを使いこなしていきましょう。

 

ありがとうございました。

 

 

 

 

スポンサーリンク