なぜ、いま「Stop」が必要なのでしょうか?
VBAを書いていて「あれ?思った通りの動きをしないな…」と頭を抱えたことはありませんか?
私も初心者の頃は、コードを端から端まで目視でチェックし、結局原因がわからず3時間が経過していた……ということがよくありました。
そんな非効率な状況を打破するのが、今回ご紹介する「Stopステートメント」です。
これを使うと、「プログラムを任意の場所で一時停止させ、その瞬間の変数の値や状況をリアルタイムで確認」できるようになります。
映画の「一時停止ボタン」を押して、画面の隅々に何が映っているかをじっくり観察するようなイメージです。
これを知っているだけで、デバッグ(不具合修正)にかかる時間は劇的に短縮されます。
使い方は至ってシンプル。「Stop」と書くだけ
難しい設定は一切不要です。プログラムを止めたい場所に「Stop」と記述するだけです。
実際に、不具合が含まれたコードを例に見てみましょう。
シナリオ:1から10まで足し算をする(はずだった)コード
以下のコードは、1から10までの数字を足し算して、最後に合計を表示する意図で作成されました。しかし、実行しても正しい結果が表示されません。
Sub DebugTest()
Dim i As Long
Dim total As Long
total = 0
For i = 1 To 10
' 本来は加算(+)すべきところを、誤って乗算(*)にしています
total = total * i ' ← わざとかけ算に
' ★ここにStopを入れる!
Stop
Next i
MsgBox "合計は: " & total
End Sub
実践!Stopステートメントの使い方
- 上記のコードをVBE(エディタ)にコピペします。
- 実行ボタン(F5)を押します。
- すると、Stop の行が黄色くなってプログラムが止まります。
- この状態で、マウスカーソルを total という文字の上に重ねてみてください。
- ポップアップで total = 0 と表示されるはずです。
「足し算をしているはずなのに、なぜ0のままなんだろう?」と、すぐに異変に気づけるはずです。(原因は + ではなく * を使っているため、0に何を掛けても0になっているからです)
F5キーを再度押すと、次のループに進み、再び Stop の位置で止まります。
何度確認しても total が0のまま更新されない様子を目の当たりにすることで、「間違い」をリアルタイムに特定できるのです。
まとめ:効率的なデバッグへのステップアップ
多くの初心者は、状況を確認するために MsgBox を多用しがちです。しかし、ループ処理の中でこれを行うと、何度も「OK」ボタンを連打することになり、かえって効率を下げてしまいます。
Stopなら、確認が終わったらその一行を削除するだけで済みます。
さらに、停止中に以下の機能を併用すると、デバッグの精度はさらに上がります。
- ローカルウィンドウの活用: (メニューの「表示」→「ローカルウィンドウ」)すべての変数の状態を一目瞭然に把握できます。
- F8キー: 停止状態から、一行ずつ慎重に処理を進めます。
- F5キー: 次の Stop 、あるいは最後まで一気に処理を再開します。
不具合の原因が分からないときは、まず怪しい場所に Stop と書いてみてください。 「なんとなく動かない」という不安が、「ここが原因だからこう直そう」という確信に変わるはずです。
次回のVBA開発で、ぜひ活用してみてください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。


コメント