Excel VBA の実行時エラー辞典

実行時エラー '11':0 で除算しました

件数や合計など、割る側の値が 0 になる入力を先に分けます。

よくある原因

直し方

  1. 停止した割り算の分母を表示します。
  2. 0 件の場合に空欄・案内表示・処理終了のどれにするか決めます。
  3. 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

調べ方

  1. エラー画面の「デバッグ」が使える場合は押し、黄色で止まった行とメッセージ全文を記録します。Windows では Alt+F11 で VBE を開けます。
  2. 停止行の少し前を選び、F9 でブレークポイントを設定します。再実行して止めたら、F8 で一行ずつ進めます。
  3. 分母に値を代入する行から F8 で進め、いつ 0 になったか確認します。
  4. Ctrl+G でイミディエイトウィンドウを開き、下の式を入力して Enter を押します。例の変数があるプロシージャ内で停止し、変数名は自分のコードに合わせてください。
? total, count

Err の情報はエラーが起きた直後に確認します。修正後は、正常な入力と問題が起きた入力の両方で結果を照合してください。

関連エラー

確認した公式資料