ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
VBA デバッグの基本
VBA(Excel / Word / Access などのマクロ)のバグは、コードを 1 行ずつ追いかけて変数値の変化を観察するのが最短ルートです。VBE(Visual Basic Editor、Alt+F11 で起動)には、ブレークポイントとステップ実行という強力な機能が標準装備されています。
ステップ実行のショートカット一覧
| キー | 動作 | 用途 |
|---|---|---|
| F8 | ステップイン | 1 行ずつ実行。Call Sub2 なら Sub2 の中まで入っていく |
| Shift+F8 | ステップオーバー | 1 行ずつ実行。呼び出した Sub / Function は中に入らず一気に通過 |
| Ctrl+Shift+F8 | ステップアウト | 今いる Sub / Function を最後まで実行して呼び出し元に戻る |
| F5 | 続行 | 次のブレークポイントまで通常実行 |
| F9 | ブレークポイント切替 | カーソル行に赤丸(停止点)を付与 / 解除 |
| Ctrl+Shift+F9 | 全ブレークポイント解除 | 赤丸を一気にクリア |
| Ctrl+Break | 実行中断 | 無限ループから抜ける |
典型的な手順
1. ブレークポイントを置く
VBE で停止させたい行にカーソルを置き、F9 を押すか、左側の灰色帯をクリックします。赤丸が付いた行で実行が一時停止します。
2. マクロを実行する
Excel 側から通常通りマクロを実行するか、VBE 上で F5 を押します。ブレークポイントに達するとその行が黄色く反転し、まだ実行されていない状態で停止します。
3. F8 で 1 行ずつ進める
F8 を押すたびに次の 1 行が実行されます。For ループの中なら同じ行を繰り返し通過するので、ループの 1 周ごとに変数がどう変わるかを目視確認できます。
サンプルコードで動きを見る
Sub StepDemo()
Dim i As Long
Dim total As Long
total = 0
For i = 1 To 5
total = total + i ' ← ここに F9 でブレークポイント
Next i
Debug.Print "合計 = " & total
End Sub
ブレークポイントで停止したら、F8 を押すたびに total = total + i が 1 周ずつ実行されます。i と total がどう増えていくかをローカルウィンドウで確認します。
変数の値を確認する 3 つのウィンドウ
| ウィンドウ | 開き方 | 役割 |
|---|---|---|
| ローカルウィンドウ | 表示 → ローカルウィンドウ | 現在のスコープのすべての変数を自動表示。配列や Object の中身も展開可能 |
| ウォッチウィンドウ | 表示 → ウォッチウィンドウ | 変数を選択して右クリック →「ウォッチ式の追加」。条件式で停止させることも可能 |
| イミディエイトウィンドウ | Ctrl+G | ? や Debug.Print で値を出力。停止中に ?i と打てば i の値が出る |
条件付きで停止させたい
「i が 100 のときだけ止めたい」のような条件付きブレークは、コード内に If 〜 Then Stop を書くのが手っ取り早い方法です。
For i = 1 To 1000
If i = 100 Then Stop ' i=100 のときだけブレーク
' ── ここで F8 で続きを追える ──
Next i
恒久的に残したくないので、デバッグが終わったら Stop 行は必ず削除してください。
F8 と Shift+F8 の使い分け
関数呼び出し(Call Sub2 や x = MyFunc())を含む行で F8 を押すと、その関数の中まで入っていきます。標準ライブラリや既にバグの無いことが分かっている自作 Sub に毎回入りたくない場合は、Shift+F8(ステップオーバー)で一気に飛ばすと効率的です。
カーソル位置まで実行
長いマクロの途中から細かく追いたいときは、確認したい行にカーソルを置いて Ctrl+F8 を押すと、そこまで通常実行で一気に進み、その行で停止します。
よくあるトラブル
| 症状 | 対処 |
|---|---|
| F8 を押しても進まない | VBE がアクティブになっていない。VBE のコードウィンドウをクリックしてからもう一度 F8 |
| 無限ループから抜けられない | Ctrl+Break または Esc 連打 |
| ブレークポイントが灰色になり機能しない | マクロが「設計時」状態にリセットされた可能性。保存して開き直すか、コードを 1 文字書き換えて元に戻す |
| 変数値が一覧に出ない | 表示 → ローカルウィンドウを開いていないだけ。または変数が他モジュールのスコープ |
Debug.Print でログ出力する
ステップ実行と並んで強力なのが Debug.Print です。マクロ実行中の任意の場所で値をイミディエイトウィンドウに出力でき、後から処理の流れを追えます。
Sub LogDemo()
Dim i As Long
For i = 1 To 5
Debug.Print "i=" & i & " 時刻=" & Now
Next i
End Sub
Ctrl+G でイミディエイトウィンドウを開いておけば、実行後に履歴が一覧表示されます。MsgBox はモーダルで処理を止めるため、ループ内の確認には向きません。ループ内のデバッグは Debug.Printが鉄則です。
エラー発生時に自動でブレーク
「実行時エラー '9': インデックスが有効範囲にありません」のようなエラーが出た瞬間に停止させたい場合は、VBE のメニュー ツール → オプション → 全般タブ → エラートラップを「エラー発生時に中断」に設定します。On Error Resume Next でエラーを握りつぶしていた箇所でも、強制的に停止してくれるため原因究明が早くなります。
呼び出し履歴(Call Stack)
停止中に Ctrl+L を押すと 呼び出し履歴ウィンドウが開き、「Sub A → Sub B → Sub C」のように現在の呼び出しチェーンが見えます。深い呼び出しでバグが起きたとき、どこから呼ばれてきたかを一瞬で把握できます。
関連
- VBA — 親カテゴリ
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- マクロとボタンの紐づけ方法
- 開発タブの表示
- モジュールの名前変更方法
- エラー一覧
- シートのコピー
- デバッグで一行ずつ実行する方法
- 変数宣言時のSETありなしの違い
- if文で複数条件を指定する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?