第10章:エラー処理とデバッグ
こんにちは、まくるだよ🐰🔍
今回は、 VBAで絶対に避けられない「エラー」と「デバッグ」 の話!
「えっ、失敗したら怖い…」って?
大丈夫!魔法には必ず 守りの呪文 があるからね🧙♀️✨
💥 エラーってなに?
プログラムを実行中に、何か問題が起きて止まってしまうこと。
たとえば…
- 存在しないシートを指定した
- 数値じゃない文字列を計算しようとした
- ファイルが見つからない
そんなときに「実行時エラー '9'」とか出るのが、 VBAのエラー !
🛡️ On Error文でエラーを無害化する
最も基本の構文:
On Error Resume Next
' ← エラーが出ても止まらない
On Error GoTo 0
' ← エラー処理を解除(元に戻す)
例:エラーをスルーして処理を続ける
Sub Sample()
On Error Resume Next
Sheets("存在しないシート").Select
MsgBox "次の処理へ進みました"
On Error GoTo 0
End Sub
⚠️ 本格的なエラー処理:On Error GoTo ラベル
Sub SampleWithHandler()
On Error GoTo ErrHandler
Dim x As Integer
x = 10 / 0 ' わざとエラー発生
Exit Sub
ErrHandler:
MsgBox "エラーが発生しました!"
End Sub
- エラーが出たら
ErrHandler:という位置にジャンプ! -
Exit Subを書くことで、正常時はエラー処理に行かない!
🔍 デバッグの基本テクニック
1. F8キーで1行ずつ実行(ステップ実行)
-
F8を押すと1行ずつ処理されるから、 どこで止まるか がわかる!
2. ブレークポイントを設定する
-
F9で行の左に赤丸 → その行で止まる! - 止まったら変数の中身を確認できる!
3. 変数ウォッチ・イミディエイトウィンドウ
Debug.Print 変数名
- 実行中に
Debug.Printで変数の値を確認できるよ! - 結果は「イミディエイトウィンドウ(Ctrl+G)」に表示✨
🔧 どんなときにエラー処理が必要?
- 外部ファイルを開くとき (ファイルがない可能性)
- ユーザー入力を扱うとき (数値以外の文字列など)
- シート名・セル参照が可変なとき (存在しない場合がある)
💡 エラー番号と説明を取得したいときは?
MsgBox "エラー番号:" & Err.Number & vbCrLf & "内容:" & Err.Description
📌 まとめ
-
On Errorで魔法をガードしよう! -
GoTo ラベルで丁寧に処理分岐 -
F8,F9,Debug.Printを使えば怖くない! - エラーは「悪者」じゃなく「学びのチャンス」✨
次回は、 「第11章:Outlookとの連携(基礎)」
メールも魔法で操作できちゃう!?VBAの世界、どこまで広がるの…📨🪄