【初心者向け】Accessで「#エラー」が出る理由と直し方

2025/12/09(更新日:2025/12/12) Accessコラム

Accessでクエリやフォームを作っていると、
計算結果が表示されるはずの場所に

#エラー
#Name?
#Type!

といった 「#から始まる文字」 が表示されることがあります。

初めて見ると
「壊れた?」「何が間違ってるの?」
と思ってしまいますが、Accessではよくあるエラー表示です。

この記事では、
初心者の方でも理解できるように説明します。

そもそも「#」って何?

「#」はで始まる文字列は、
Accessが計算できませんでした
というサインです。

原因はほとんどが次の3つです。

1.名前の書き間違い
2.空っぽ(Null)のデータ
3.Accessに存在しない書き方

日本語版Accessのエラー表示は「#エラー」で統一される

実はAccessには本来、複数の種類のエラーがあります。

・#エラー(計算不可)
・#Name?(名前が違う)
・#Type!(データ型が違う)
・#Div/0!(0で割っている)

しかし、日本語版のフォームとレポートでは、どんな種類のエラーでも、
すべて「#エラー」 として表示されます。

つまり、

✔ フォーム → なんでも「#エラー」
✔ レポート → 同じく「#エラー」
✔ クエリだけ → 本来のエラー名がそのまま出る(#Name? など)

これを知っているだけで、原因を探すときの迷いが減ります。

「#エラー」が出る原因

・フィールド名を間違えている
・計算式がおかしい
・コントロール名とフィールド名が同じ
・計算結果が不正(Null × 数値 など → Typeエラー)

=[単価] * [数量]

実際は [数量] が存在しない → Nameエラー

フォームではすべて「#エラー」と表示される

確認ポイント

・フィールド名は正しいか
・全角・半角が混ざっていないか
・コントロール名がフィールド名と同じになっていないか

「#Name?」が出る原因

名前が間違っている時のエラー。
ただしフォームでは「#エラー」に統一されます。

原因

・フィールド名・関数名の書き間違い
・Excelの書き方をそのまま使っている
・クエリに無い項目をフォームで参照している

よくある間違い

=IF([金額]>0, “あり”, “なし”)

正しい書き方(Access)

=IIf([金額]>0, “あり”, “なし”)

Accessでは IF ではなく IIf を使います。

「#Type!」が出る原因

・数字と文字列を混ぜて計算している
・空欄(Null)を計算している
・関数の引数が型に合わない

=[単価] * [数量]

どちらかが空だとエラーになります。

直し方

=Nz([単価],0) * Nz([数量],0)

Nz は「空なら0にする」便利な関数

「#Div/0!」が出る原因

・数量が 0 または Null の状態で割り算している

=[売上] / [数量]

数量が 0(ゼロ)または空欄のままだとAccess がエラーを出します。

直し方

=IIf(Nz([数量],0)=0, 0, [売上] / [数量])

フォーム・レポートでよくあるエラーと注意点

フォーム・レポートで特に注意すること

・初心者がよくやるエラーの原因です。
・元のクエリに無い項目を使う
・コントロール名とフィールド名が似ていて間違える
・サブフォーム(サブレポート)を正しく参照できていない

必ず
「この画面はどのクエリを使っているか」
を確認しましょう。

エラーが出たときのチェック

・項目名のスペルは合っている?
・Excelの書き方を使っていない?
・Nzで空データ対策している?
・割り算で0になっていない?

これだけで 9割は解決します。

サブフォーム参照で 「#エラー」 が出る原因と対処

Accessでよくある実務的な操作として、
サブフォームに入力した明細の合計金額を、親フォーム側に表示したい
というケースがあります。

この操作で参照方法を間違えると、今回紹介した #エラー が出やすいため、
正しい書き方を知っておくと便利です。

① サブフォーム側で合計を作る

1.サブフォームをデザインビューで開く
2.フォームフッターにテキストボックスを置く
3.コントロールソースに合計式を入れる:

=Sum([金額])

(※ [金額] は実際のフィールド名に合わせる)

4.テキストボックスに名前をつける
例:

txt明細合計

 

② 親フォーム側でサブフォームの合計を参照する

親フォームにテキストボックスを置き、
コントロールソースに次のように書きます。

=[サブフォームコントロール名].Form!txt明細合計

ここでよく起きるのが、

サブフォームの「フォーム名」と「サブフォームコントロール名」を混同する
合計テキストを作っていないのに参照しようとする

どちらもフォーム上では #エラー と表示されます。

まとめ

「#」で始まるエラーは、
Accessからの「ここ計算できないよ!」というヒントです。

特に日本語版ではフォーム・レポートで
全部「#エラー」に見えるため原因が分かりにくいですが、

・名前(Name)
・空欄(Null)
・書き方(Excel式など)

この3つを順番に確認すれば、初心者でも必ず直せます。

 

Access開発サポートがわかる、
3つのコンテンツ