Excel VBA の実行時エラー辞典

実行時エラー '94':Null の使い方が正しくありません

データベースなどから受け取った Null を、文字列や数値へ直接変換していないか確認します。

よくある原因

直し方

  1. 値を Variant で受け取り、IsNull で状態を調べます。
  2. 未入力を空文字・案内・処理終了のどれにするか、データの用途に合わせて決めます。
  3. If で分岐してから変換します。IIf は変換する側も評価するため、Null の変換回避には使いません。

元のブックや入力ファイルを残し、コピーで試してください。以下は一つの原因を扱う例です。Sub 全体を示していないコードは、練習用の Sub の中に記述します。

Null は、空のセルの Empty や空文字とは異なります。通常の空セルをすべて Null とみなさないでください。

修正前

Dim value As Variant, label As String
value = Null
label = CStr(value)

修正後

Dim value As Variant, label As String
value = Null
If IsNull(value) Then
    label = "未入力"
Else
    label = CStr(value)
End If
Debug.Print label

調べ方

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

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

関連エラー

確認した公式資料