ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
VBA のエラーとは
VBA(Visual Basic for Applications)のエラーは大きくコンパイルエラー、実行時エラー、論理エラーの 3 つに分かれます。本ページでは特に頻出する実行時エラーを中心に、エラー番号・原因・対処法を一覧でまとめます。
頻出エラー番号 早見表
| 番号 | 名称 | 主な原因 |
|---|---|---|
| 3 | Return が GoSub なしで実行された | GoSub / Return の対応ミス |
| 5 | プロシージャの呼び出し、または引数が不正です | 引数の型/範囲ミス、Mid$ の負の開始位置など |
| 6 | オーバーフローしました | Integer 範囲超え(-32768 〜 32767) |
| 7 | メモリが不足しています | 巨大な配列、Variant の使いすぎ |
| 9 | インデックスが有効範囲にありません | 配列添字超え、Worksheets("存在しない") |
| 11 | 0 で除算しました | 分母が 0 |
| 13 | 型が一致しません | 文字列を数値に渡す等 |
| 20 | エラーがないのに Resume しました | On Error 構文の使い方ミス |
| 52 | ファイル名または番号が不正です | Open #1 などの番号衝突 |
| 53 | ファイルが見つかりません | パス間違い |
| 55 | ファイルは既に開かれています | 多重 Open |
| 57 | デバイス I/O エラーです | ディスクや I/O 異常 |
| 58 | 既に同名のファイルが存在しています | FileCopy / Name で上書き不可 |
| 61 | ディスクの空き領域が不足しています | 書き込み失敗 |
| 62 | ファイルの終わりを超えました | EOF 確認不足 |
| 70 | 書き込みできません | 読み取り専用、権限不足 |
| 75 | パス名が無効です | 不正な文字を含むパス |
| 76 | パスが見つかりません | フォルダ不在 |
| 91 | オブジェクト変数または With ブロック変数が設定されていません | Set し忘れた |
| 92 | For ループが初期化されていません | For を経由しないジャンプ |
| 94 | Null の使い方が不正です | Null を非対応プロパティに渡す |
| 424 | オブジェクトが必要です | Set 漏れ、変数のスコープ |
| 438 | オブジェクトは、このプロパティまたはメソッドをサポートしていません | スペルミス、参照ライブラリ不在 |
| 457 | このキーは既にコレクションの要素に割り当てられています | Collection に同一キーで追加 |
| 1004 | アプリケーション定義またはオブジェクト定義のエラー | Range / Cells / Worksheets 操作の不整合(最頻出) |
エラー処理の基本構文
On Error Resume Next(エラーを無視して次へ)
On Error Resume Next
ws.Range("A1").Value = "test"
If Err.Number <> 0 Then
Debug.Print "Error " & Err.Number & ": " & Err.Description
Err.Clear
End If
On Error GoTo 0 ' エラー処理を解除
On Error GoTo ラベル(指定ラベルにジャンプ)
Sub Sample()
On Error GoTo ErrHandler
Dim x As Integer
x = 1 / 0 ' ゼロ除算 → Error 11
Exit Sub
ErrHandler:
MsgBox "Error " & Err.Number & vbCrLf & Err.Description
End Sub
Err オブジェクト
| プロパティ / メソッド | 用途 |
|---|---|
Err.Number | エラー番号 |
Err.Description | エラーメッセージ |
Err.Source | エラー発生元の名称 |
Err.Clear | Err オブジェクトをリセット |
Err.Raise number | 独自のエラーを発生させる |
独自エラーを発生させる
Function GetAge(birth As Date) As Integer
If birth > Date Then
Err.Raise vbObjectError + 1001, "GetAge", "未来の日付は無効です"
End If
GetAge = DateDiff("yyyy", birth, Date)
End Function
頻出エラーの原因と対処
Error 9: インデックスが有効範囲にありません
' NG: 存在しないシート
Worksheets("Sheet99").Range("A1").Value = "x"
' OK: 存在チェック
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "Sheet99" Then
ws.Range("A1").Value = "x"
Exit For
End If
Next
Error 13: 型が一致しません
' NG: 文字列を Integer に
Dim n As Integer
n = "abc" ' Error 13
' OK: 数値変換できるか確認
If IsNumeric(s) Then
n = CInt(s)
End If
Error 91: オブジェクト変数が設定されていません
' NG: Set 漏れ
Dim ws As Worksheet
ws.Range("A1").Value = "x" ' Error 91
' OK
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Range("A1").Value = "x"
Error 1004: アプリケーション定義/オブジェクト定義のエラー
最頻出ですが原因は多岐に渡ります。代表例:
- 存在しないセル/シートを Range / Cells で参照
- 保護されたシートに書き込み
- 結合セルの一部だけ操作
- Cells(0, 1) など 0 番を指定
- Range("A1:A0") など無効な範囲
' NG: 保護シートに書き込み
ws.Range("A1").Value = "x" ' Error 1004
' OK: 一時的に保護解除
ws.Unprotect Password:="pass"
ws.Range("A1").Value = "x"
ws.Protect Password:="pass"
デバッグの定番テクニック
| 操作 | ショートカット | 用途 |
|---|---|---|
| ステップイン | F8 | 1 行ずつ実行 |
| ブレークポイント | F9 | 指定行で停止 |
| イミディエイトウィンドウ | Ctrl + G | その場で式評価 |
| ローカルウィンドウ | 表示 → ローカル | 変数の現在値 |
| Debug.Print | — | ログ出力 |
エラー処理のベストプラクティス
- On Error Resume Next を無闇に使わない — 必要最小限の範囲に絞り、終了時は
On Error GoTo 0 - エラー番号でハンドリングを分岐 — 9 / 13 / 1004 ごとに対処
- 必ず Err.Clear する — ハンドラ後の誤検知防止
- ログを残す — Debug.Print や別シートにエラー履歴
- 独自エラーは vbObjectError + N で衝突を避ける
FAQ
Q: コンパイルエラーと実行時エラーの違いは?
A: コンパイルエラーは VBA エディタで赤くなる構文ミス。実行時エラーは F5 や Sub 実行時に発生する論理/データ系のエラーです。
Q: 海外環境で Error メッセージが英語
A: Err.Description が言語に依存するため、ハンドリングはErr.Number で判定するのが鉄則です。
関連
- On Error 構文 — エラー処理の制御
- Err オブジェクト — エラー情報
- Debug.Print — イミディエイト出力
- Resume / Resume Next — エラー後の処理復帰
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?