0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実務VBA⑥】デバッグ効率を上げるテクニック

0
Posted at

はじめに

VBAを書いていて、こんな経験はありませんか?

  • 結果が想定と違う
  • エラーは出ないのに値がおかしい
  • どこで処理がズレたかわからない
  • MsgBox を大量に出して確認している

実務では、バグを早く見つけられる人ほど強いです。
そのときにまず使いたいのが、VBA標準のデバッグ機能である

  • Debug.Print
  • Stop

この2つです。
今回は、現場でもすぐ使える デバッグ効率を上げる基本テクニック を紹介します。

目次

  1. なぜデバッグに時間がかかるのか
  2. Debug.Print の使い方
  3. Stop の使い方
  4. 実務で使える調査パターン3選
  5. デバッグが速い人の考え方
  6. まとめ

1. なぜデバッグに時間がかかるのか

VBA初心者の頃によくあるのが、値確認のために MsgBox を連発する方法です。

MsgBox x
MsgBox y
MsgBox z

これでも確認はできますが、問題があります。

  • 毎回OKを押す必要がある
  • 連続処理が止まる
  • ループ処理では使いにくい
  • 大量データでは非効率

つまり、確認方法が遅い = デバッグ全体が遅い ということです。

2. Debug.Print の使い方

Debug.Print は、イミディエイトウィンドウへ値を出力する命令です。

Sub Sample()

    Dim i As Long

    For i = 1 To 5
        Debug.Print i
    Next i

End Sub

実行結果:

1
2
3
4
5

イミディエイトウィンドウの表示方法

VBE(Visual Basic Editor)で以下を押します。

Ctrl + G

すると下部にイミディエイトウィンドウが表示されます。

メリット

  • 処理を止めずに確認できる
  • 大量データでも使いやすい
  • ループ内確認に強い
  • 複数変数を同時に見られる

複数値を出力する例

Debug.Print i, productName, amount

結果イメージ:

1   PC      50000
2   Mouse   3000
3   Desk    20000

3. Stop の使い方

Stop は、処理をその場で一時停止する命令です。

Sub Sample()

    Dim x As Long

    x = 10

    Stop

    x = x + 5

End Sub

Stop に到達すると処理が止まり、その時点の変数状態を確認できます。

Stopでできること

  • 変数の値確認
  • ステップ実行(F8)
  • 処理の流れ確認
  • 値を書き換えてテスト

こんな時に便利

  • 途中から値がおかしくなる
  • 特定行数で止めたい
  • 分岐前後を確認したい

4. 実務で使える調査パターン3選

① 何行目で値がおかしいか調べる

Dim i As Long

For i = 2 To lastRow

    Debug.Print i, Cells(i, 1).Value

Next i

これで、

  • 行番号
  • セル値

を追えるため、異常データの場所を特定しやすくなります。

② 条件分岐に入っているか確認する

If amount > 100000 Then
    Debug.Print "高額案件", amount
End If

条件が想定通り動いているか確認できます。

③ 500行目で止める

If i = 500 Then Stop

大量データ処理中でも、確認したい地点で止められます。

5. デバッグが速い人の考え方

デバッグが速い人は、感覚で探しません。
以下の順番で絞り込みます。

  • どこまでは正常か
  • どこから異常か
  • その直前の値は何か
  • 条件分岐は正しいか

つまり、推測ではなく、事実で追う
これが重要です。

6. 実務でさらにおすすめの使い方

Debug.Print + 見やすい文字列

Debug.Print "行番号:" & i & " 金額:" & amount

結果:

行番号:15 金額:98000

見やすさがかなり上がります。

作業後は削除またはコメントアウト

デバッグコードは本番前に整理しましょう。

' Debug.Print amount

まとめ

VBAのデバッグ効率を上げたいなら、まずこの2つです。

  • Debug.Print → 値確認
  • Stop → 一時停止確認

難しい技術より、こうした基本操作の積み重ねが最も効きます。

バグ修正が速い人は、Debug.Print の使い方がうまいです。

実務VBAシリーズ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?