Excel VBA の実行時エラー辞典
実行時エラー '11':0 で除算しました
件数や合計など、割る側の値が 0 になる入力を先に分けます。
よくある原因
- 対象データがなく、平均を求める件数が 0 です。
- 空のセルを数値として扱い、分母が 0 になっています。
- 変数名の打ち間違いや代入漏れで、分母が初期値の 0 のままです。
直し方
- 停止した割り算の分母を表示します。
- 0 件の場合に空欄・案内表示・処理終了のどれにするか決めます。
- If で分岐してから割り算を実行します。IIf は両方の式を評価するため、0 除算の回避には使いません。
元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。
0 件のときは平均を計算せず、案内を表示する例です。
修正前
Dim total As Double, count As Long
total = 100: count = 0
Debug.Print total / count
修正後
Dim total As Double, count As Long
total = 100: count = 0
If count = 0 Then
MsgBox "集計対象がありません"
Else
Debug.Print total / count
End If
調べ方
- エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
- 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
- 分母に値を代入する行から F8 で進め、いつ 0 になったか確認します。
- Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? total, count
Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。