ブレークポイントってそもそも何者?
ブレークポイントは、VBAの実行を「ここで一回止まって」と指示するための“しおり”のようなものです。
マクロを F5 で一気に実行すると、途中の様子は見えませんが、ブレークポイントを置いておくと、その行に来たところでピタッと止まってくれます。
止まったところから、F8 で一行ずつ進めたり、変数の中身を確認したりできます。
つまりブレークポイントは、「このあたりの動きをじっくり観察したい」ときに使う、超重要な“一時停止ボタン”です。
ブレークポイントとステップ実行の関係
ステップ実行(F8)は、最初からずっと一行ずつ進めるモードでした。
ブレークポイントは、「そこまでの道のりは一気に走っていいから、この行に来たら止まって」という指定です。
イメージとしてはこうです。
最初から全部 F8 で追うのは、長いマクロだとしんどい。
だから、気になる場所にブレークポイントを置いて、そこまでは F5 で一気に進める。
止まったところから、F8 で細かく追いかける。
この「F5 でブレークポイントまで → そこから F8 でじっくり」ができるようになると、デバッグ(動きの確認)が一気に楽になります。
ブレークポイントの置き方と消し方
どこに置くのか
ブレークポイントは、「実行したい行」に置きます。
具体的には、Sub の中の、実際に処理が書かれている行(たとえば Range や MsgBox の行)です。
コメント行(’ で始まる行)や、空行、Sub や End Sub の行には置いても意味がありません。
「この行が実行される直前で止まってほしい」という行を選ぶのがポイントです。
置き方1:左端をクリックする
VBE のコードウィンドウで、止めたい行の左端の灰色の余白部分をクリックします。
すると、その行に赤い丸が付き、行全体が赤くハイライトされます。
これが「ブレークポイントが置かれた状態」です。
もう一度同じ場所をクリックすると、赤い丸が消えてブレークポイントが解除されます。
置き方2:カーソルを置いて F9 を押す
止めたい行の上にカーソルを置き、キーボードの F9 を押してもブレークポイントを設定できます。
もう一度 F9 を押すと解除されます。
マウス派なら左端クリック、キーボード派なら F9。
どちらを使っても結果は同じです。
具体例でブレークポイントの動きを体験する
例題1:途中で止めてセルの状態を見る
標準モジュールに、次のようなマクロを書いてみてください。
Sub ブレークポイント練習()
Range("A1").Value = "一行目"
Range("A2").Value = "二行目"
Range("A3").Value = "三行目"
End Sub
VBここで、二行目の
Range(“A2”).Value = “二行目”
の行にブレークポイントを置きます。
左端をクリックして赤丸と赤い行になっていればOKです。
次に、このマクロの中にカーソルを置いて F5 を押します。
すると、マクロは実行されますが、A1 には「一行目」が入り、A2 に来る直前で止まります。
VBE では、ブレークポイントの行が黄色くハイライトされているはずです。
この状態で Excel のシートを見ると、A1 だけが書き換わっていて、A2 と A3 はまだ空のままです。
ここから F8 を押すと、A2 に「二行目」が入り、もう一度 F8 で A3 に「三行目」が入ります。
この例で感じてほしいのは、
「ブレークポイントまでの処理は一気に終わっていて、そこから先を一歩ずつ見ていける」
という感覚です。
例題2:おかしいところの“手前”で止める
次は、わざと間違いを入れたコードで、ブレークポイントのありがたみを感じてみます。
Sub 合計がおかしい例()
Range("A1").Value = 10
Range("A2").Value = 20
Range("A3").Value = Range("A1").Value + Range("A1").Value ' 本当は A2 を足したい
End Sub
VBこのマクロを F5 で一気に実行すると、A3 には 20 が入ります。
でも、本当は 30 にしたいので、「なんかおかしいな」となります。
ここで、
Range(“A3”).Value = …
の行にブレークポイントを置いて、もう一度 F5 で実行してみます。
今度は、A1 に 10、A2 に 20 が入ったところで止まり、A3 はまだ空のままです。
この状態で、コードのその行を見直すと、「あ、A1 と A1 を足してる」と気づきやすくなります。
さらに、ここから F8 で一行進めると、その瞬間に A3 に 20 が入るのが見えます。
「この行が、このおかしな結果を作っているんだな」というのが、目で確認できます。
これが、ブレークポイントとステップ実行を組み合わせたときの強さです。
ブレークポイントを使うときのコツと注意点
重要ポイント1:止めたい「少し手前」に置く
ブレークポイントは、「その行が実行される直前で止まる」ものです。
なので、「この行の結果を見たい」と思ったら、その行にブレークポイントを置けばOKです。
ただ、場合によっては「その一つ前の行に置く」方が分かりやすいこともあります。
たとえば、A3 に合計を入れる行の前で止めて、A1 と A2 の値を確認してから、F8 で A3 を計算させる、という使い方です。
超初心者のうちは、
「この行の前で止まってほしい」=「その行にブレークポイントを置く」
と覚えておけば十分です。
重要ポイント2:ブレークポイントを消し忘れない
ブレークポイントを残したまま F5 を押すと、毎回そこで止まってしまいます。
「なんかいつも途中で止まるな」と思ったら、赤い丸が残っていないか確認してみてください。
消し方は、置いたときと同じで、左端をもう一度クリックするか、F9 を押すだけです。
ブレークポイントが多くなってきたら、メニューの「デバッグ → すべてのブレークポイントをクリア」で一括削除もできます。
重要ポイント3:ブレークポイントは“学習用の拡大鏡”でもある
ブレークポイントは「エラーを探すためのもの」と思われがちですが、超初心者にとっては「学習用の拡大鏡」として使うのがとても有効です。
たとえば、少し長めのマクロを書いたときに、
「このあたりから何をしているのか、まだよく分かっていない」
という場所にブレークポイントを置いて、そこまで F5 で飛ばす。
止まったところから F8 で一行ずつ進めながら、セルの変化や変数の値を見ていく。
これを繰り返すと、「コードを読む」のではなく「コードの動きを観察する」感覚が身についてきます。
まとめと、次の一歩
ブレークポイントは、VBAの実行を「この行で一回止めて」と指示するためのしおり。
止めたい行の左端をクリックするか、カーソルを置いて F9 を押すと設定できる。
F5 で実行すると、ブレークポイントの行に来たところで止まり、そこから F8 で一行ずつ進められる。
「どの行でおかしくなっているか」を探したり、「このあたりの動きをじっくり観察したり」するのに最適。
次の一歩としては、今日の例のような短いマクロに、あえていろいろな場所にブレークポイントを置いてみて、
「ここに置くと、どこまで一気に動いて、どこで止まるのか」を体で覚えていくのがおすすめです。
