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入門⑩】止まらない!怖くない!エラー処理とデバッグの魔法🧙‍♀️✨

Last updated at Posted at 2025-08-07

第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の世界、どこまで広がるの…📨🪄

VBA初心者 #Excelマクロ #エラー処理 #デバッグ #業務効率化

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?