【Excelマクロ】エラー処理 デバッグ

Excelマクロ

デバッグの基本「ステップイン」と「ブレイクポイント」

マクロを作成する上で、エラーは避けて通れないものです。

どれだけ完璧にコードを書いたつもりでも、思い通りに動作しないことはよくあります。

そんなときに重要なのがデバッグと呼ばれる「どこで間違えたかを探し出し、修正する作業」です。

このデバッグを早くするために便利な方法として、次の2つの方法があります。

  1. ステップイン
  2. ブレイクポイント

1. ステップインで1行ずつ実行する

ステップインとはVBAのコードを「1行ずつ実行しながら動作を確認できる」機能です。

複数行コードがあると、どこでエラーが起きているかわかりづらく、実際の動作を見ながら、自分で作成したマクロが思い通りに動いているかを確認することができます。

ステップインの使い方

  1. VBAエディタ(VBE)を開く
  2. デバッグしたいコードウインドウ(コードが記載されているページ)を選択する
  3. 「F8」キーを押す (1回押すごとに1行ずつ実行)
ステップインの活用例

例えば、次のようなコードがあるとします。

Sub sample()

Dim i As Long
  
For i = 1 To 10
    MsgBox "値は" & i
Next

End Sub

このコードを F81行ずつ実行すると、次のように動作を確認できます。

  1. Dim i As long が実行される
  2. For構文が動き、「i」にはまず「1」が入る
  3. MsgBox "値は" & i 」が実行されるので「値は1」と言うメッセージが出る
  4. Nextになると、Forに戻り、「i」が「2」に変更される
  5. これを繰り返し、10まで行う

このように1つ1つの動作を丁寧に確認をすることができます。

ステップインのメリット

  • コードの流れを確認できる
  • 想定通りの動作になっているかチェックできる
  • 1行ずつ確認するので、細かいミスを見つけやすい

2. ブレイクポイントで特定の位置まで実行する

ブレイクポイントとはコードの特定の位置で実行を停止し、その時点まで値や動作を確認できる機能です。

先ほどのステップインは「1行ずつ」動作を行いましたが、複数行、一気に動作させたい場合にはブレイクポイントを活用します。

これにより、いちいち最初からF8で1行ずつ進める必要がなくなります

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

  1. VBAエディタ(VBE)を開く
  2. 止めたい行の左側の余白をクリックするまたは「F9」キーを押す
    → 茶色の「⚫︎」マークがつく
  3. 実行(F5)すると、ブレイクポイントの場所で一時停止する
ブレイクポイントの活用例

例えば、以下のコードを考えます。

Sub sample()

Dim i As Long
Dim j As Long

For i = 1 To 10
    Cells(i,1).Value = i
Next

⚫︎ For j = 1 To 10
    Cells(i,2).Value = j
Next

End Sub

例えば「For j = 1 To 10」の行でブレイクポイントを設定し、マクロを実行すると「A列に1〜10」の値を入力した状態でマクロが停止します。

今回は一例ですが、それぞれ処理が異なるコードを並べている場合、どこで不具合が起こっているのか、探すのが大変です。

そのため、ブレイクポイントを使って、全てのコードを動かすのではなく、正しいと思われる複数行の動作が正しく動いているか、確認をし、不具合が起きる箇所を狭めていき、エラーの原因を特定します。

ブレイクポイントのメリット

  • コードを一気に実行しつつ、途中で止められる
  • 特定の範囲だけ確認できるので、デバッグが速い
  • 複数のブレイクポイントを設定して、動作を細かく確認できる

まとめ

VBAのデバッグには 「ステップイン」と「ブレイクポイント」 を活用するのが重要です。

方法特徴使いどころ
ステップイン (F8)1行ずつ実行 しながら確認できる短いコードや、細かいミスをチェックしたいとき
ブレイクポイント (F9)特定の位置まで実行して一時停止 できる長いコードの中で、特定の範囲だけ確認したいとき

コードが短い場合は ステップイン(F8) で細かく確認し、
コードが長くなる場合は ブレイクポイント(F9) を活用して効率的にデバッグしましょう!

エラーをスムーズに解決することで、VBAのスキルアップにもつながります。ぜひ試してみてください!

コメント