「電話番号欄に文字が入力されてしまった」「日付に将来の日付が登録された」——こうしたデータ入力ミスを防ぐのが入力規則(Validation Rule)と定型入力(Input Mask)です。フォームでの入力制御にとどまらず、テーブルのフィールド設定に組み込むことでデータベースレベルでデータ品質を守れます。
入力規則はフィールドに入力できる値の条件式(たとえば「0以上かつ100以下」「今日以前の日付」など)を指定する設定です。定型入力は入力欄にあらかじめひな形(マスク)を表示して電話番号・郵便番号・日付などを決まった書式で入力させる機能です。どちらもデザインビューのフィールドプロパティから設定でき、MOS Access試験でも出題される重要な操作です。
本記事では、フィールドレベル・レコードレベルの入力規則の設定手順、エラーメッセージのカスタマイズ、入力規則式で使える演算子と関数、定型入力ウィザードの操作手順と主要パターン、実務別の活用例、よくあるトラブルと対処法、MOS試験の出題ポイントまでを体系的に解説します。
入力規則と定型入力の違い
混同しやすい2つの機能ですが、目的と動作が異なります。
| 機能 | 目的 | エラーのタイミング | 設定場所 |
|---|---|---|---|
| 入力規則(Validation Rule) | 値が条件を満たすかチェック | フィールド移動時・レコード保存時 | フィールドプロパティ「入力規則」欄 |
| 定型入力(Input Mask) | 入力書式をひな形で制限 | 書式外の文字を入力した瞬間 | フィールドプロパティ「定型入力」欄 |
入力規則は「値が条件を満たしているか」を事後チェックします。定型入力は「入力できる文字の種類・位置・桁数」を事前に制限します。電話番号を「数字のみ・11桁」に制限したい場合、定型入力で「数字のみ入力可能な11文字分のマスク」を設定するのが適切です。「0以上の整数のみ可能」のような値の範囲チェックには入力規則を使います。
フィールドレベルの入力規則を設定する
フィールドレベルの入力規則は、テーブルの特定フィールドに対して設定します。条件を満たさない値が入力されると、フィールドを移動しようとしたときにエラーメッセージが表示され、対象フィールドへの入力が確定できません。
設定手順
- ナビゲーションウィンドウでテーブルを右クリックし、「デザインビュー」を選択する
- 入力規則を設定したいフィールド名の行をクリックして選択する
- 画面下半分の「フィールドプロパティ」エリアで「入力規則」欄をクリックする
- 条件式を入力する(例:
>=0 And <=100) - 「入力規則メッセージ」欄に表示するエラーメッセージを入力する(省略するとAccessの既定メッセージが表示される)
- 上書き保存(Ctrl+S)して変更を確定する
保存時に「既存のデータが入力規則に違反しています」という確認が表示される場合があります。「はい」を選ぶと違反データを含むテーブルにも設定が適用されます。違反データはそのまま残りますが、次回の編集時にエラーが表示されます。
入力規則式の基本構文
入力規則式はフィールド値を表す変数を使わず、直接値と演算子で書きます。フィールド値自体は式に含めず、比較対象の値だけを書く点がExcelの数式と異なります。
| 目的 | 入力規則式の例 | 説明 |
|---|---|---|
| 0以上の整数のみ可 | >=0 | 0以上の数値のみ許可する |
| 1~100の範囲内 | >=1 And <=100 | 1以上かつ100以下のみ許可する |
| 空白(Null)不可 | Is Not Null | Null値の入力を禁止する(必須フィールドには「値要求」プロパティを使う方が一般的) |
| 今日以前の日付のみ | <=Date() | 今日より後の日付を禁止する(生年月日フィールドなど) |
| 今日以降の日付のみ | >=Date() | 過去日付を禁止する(予定日フィールドなど) |
| 特定の値だけ許可 | "東京" Or "大阪" Or "名古屋" | 指定した文字列だけを許可する |
| Like演算子でパターン一致 | Like "???-????-????" | 「?」は任意の1文字。電話番号のパターン確認などに使う |
エラーメッセージ(入力規則メッセージ)をカスタマイズする
「入力規則メッセージ」欄にテキストを入力することで、条件を満たさない値を入力したときに表示されるダイアログのメッセージをカスタマイズできます。入力がない場合は「このフィールドに入力した値が正しくありません。入力規則の条件に違反しています。」というAccessの既定メッセージが表示されます。
良いエラーメッセージの書き方
エラーメッセージは「何が問題か」と「どう直せばよいか」をユーザーに伝えることが重要です。技術的な表現を避け、操作者が理解できる言葉で書きましょう。
| 入力規則式 | 避けたいメッセージ(例) | 推奨するメッセージ(想定例) |
|---|---|---|
>=0 And <=100 | 「入力規則エラー」 | 「0~100の数値を入力してください」 |
<=Date() | 「日付が不正です」 | 「今日以前の日付を入力してください(将来日付は入力できません)」 |
"東京" Or "大阪" Or "名古屋" | 「入力エラー」 | 「東京・大阪・名古屋のいずれかを選択してください」 |
レコードレベルの入力規則を設定する
フィールドレベルの入力規則は単一フィールドに対するチェックですが、レコードレベルの入力規則は複数フィールドを横断した条件チェックに使います。たとえば「開始日は終了日より前でなければならない」のように、2つのフィールドの値を比較するルールはレコードレベルで設定します。
設定手順
- テーブルをデザインビューで開く
- リボン「テーブルデザイン」タブの「表示/非表示」グループにある「プロパティシート」をクリックする
- 右側に開いたプロパティシートの「入力規則」欄にレコードレベルの条件式を入力する(例:
[開始日]<=[終了日]) - 「入力規則メッセージ」欄にエラーメッセージを入力する
- デザインビューを保存する
レコードレベルの入力規則式では、フィールド名を[ ]で囲んで参照します。フィールドレベルとの違いは、フィールド名を明示的に書くという点です。レコードを保存しようとしたときにチェックが実行され、条件を満たさない場合はメッセージが表示されてレコードが確定されません。
フィールドレベルとレコードレベルの使い分け
| 条件の種類 | 適切な設定レベル | 設定場所 |
|---|---|---|
| 単一フィールドの値範囲・パターン | フィールドレベル | フィールドプロパティ「入力規則」欄 |
| 2フィールド以上の値を比較する条件 | レコードレベル | テーブルプロパティシート「入力規則」欄 |
| Null禁止(入力必須) | フィールドレベル(または「値要求」プロパティ) | フィールドプロパティ「値要求」を「はい」に変更するのが標準的 |
入力規則式で使える主要演算子と関数
比較・論理演算子
| 演算子 | 意味 | 使用例 |
|---|---|---|
> < >= <= = <> | 数値・日付の比較 | >0、<>"" |
And | 両方の条件を満たす(AND) | >=1 And <=100 |
Or | どちらかの条件を満たす(OR) | "男" Or "女" Or "回答しない" |
Not | 条件を否定する(NOT) | Not "削除済み" |
Between A And B | AとBの間(両端含む) | Between 1 And 100 |
In (値1, 値2, ...) | リストに含まれる | In ("東京","大阪","名古屋") |
Like "パターン" | ワイルドカード一致 | Like "????-??" |
Is Null / Is Not Null | Null値の判定 | Is Not Null |
入力規則式でよく使う関数
| 関数 | 説明 | 使用例 |
|---|---|---|
Date() | 今日の日付を返す | <=Date() (今日以前のみ許可) |
Now() | 現在の日時を返す | <=Now() (現在以前の日時のみ許可) |
Len() | 文字列の長さを返す | Len([フィールド名])<=50(レコードレベルで使用) |
IsNumeric() | 数値かどうかを判定する(True/False) | 入力規則での使用は一部制限あり。定型入力が適切な場合が多い |
定型入力(Input Mask)とは
定型入力は、フィールドへの入力欄にあらかじめ書式のひな形(マスク)を表示して、入力できる文字の種類・桁数・区切り文字を制限する機能です。ユーザーは「_」で示された位置に指定された種類の文字を入力するだけで、区切り文字は自動で挿入されます。
たとえば電話番号の定型入力を000-0000-0000に設定すると、フォームの入力欄には「___-____-____」のひな形が表示されます。ユーザーが数字を入力すると「090-」のようにハイフンが自動挿入され、数字以外は入力できなくなります。
定型入力と入力規則の組み合わせ
定型入力と入力規則は同時に設定できます。定型入力で「書式(文字数・文字種)」を制限し、入力規則で「値の条件(範囲・パターン)」をチェックするという組み合わせが実務では多く使われます。ただし、定型入力が設定されているフィールドに入力規則のLike演算子を使う場合は、マスク文字が格納値に含まれるかどうかに注意が必要です。
定型入力ウィザードで設定する手順
Accessには電話番号・郵便番号・日付・パスワードなど代表的なパターンが組み込まれた定型入力ウィザードがあります。よく使う定型入力はウィザードを使うと手軽に設定できます。
ウィザードを使った設定手順
- テーブルをデザインビューで開く
- 定型入力を設定したいフィールドの行をクリックして選択する
- フィールドプロパティの「定型入力」欄をクリックし、欄の右端に表示される「…」ボタンをクリックする
- 「定型入力ウィザード」が開く。一覧から目的のパターン(例:「電話番号」「郵便番号」)を選択する
- 「次へ」をクリックして、定型入力の文字列と省略表示文字(「_」が既定)を確認・変更する
- 「次へ」をクリックして、区切り文字の格納方法(「区切り文字を含めて格納する」または「区切り文字を含めずに格納する」)を選択する
- 「完了」をクリックして設定を確定し、デザインビューを保存する
手順6の「区切り文字の格納方法」は実務上重要です。「含めて格納する」を選ぶと「090-1234-5678」のようにハイフンを含む値がテーブルに保存されます。「含めずに格納する」を選ぶと「09012345678」のように純粋な数字だけが保存されます。クエリでの絞り込みやデータ連携のしやすさを考慮して選択してください。
定型入力の書式コードと主要パターン
手動で定型入力の文字列を直接入力する場合、以下の書式コードを使用します。
主要な書式コード
| コード | 意味 | 代替文字の可否 |
|---|---|---|
0 | 数字(0~9)必須入力 | 不可(空白の代わりに0が入る) |
9 | 数字または空白(省略可能) | 可 |
# | 数字・スペース・+・-(省略可能) | 可 |
L | アルファベット(A~Z)必須入力 | 不可 |
? | アルファベットまたは空白(省略可能) | 可 |
A | アルファベットまたは数字(必須) | 不可 |
a | アルファベットまたは数字(省略可能) | 可 |
& | 任意の文字または空白(必須) | 不可 |
C | 任意の文字または空白(省略可能) | 可 |
< | 以降の文字を小文字に変換 | - |
> | 以降の文字を大文字に変換 | - |
! | 右詰め入力(左から埋めるのでなく右から入力) | - |
\ | 直後の文字をリテラル(そのまま表示)として扱う | - |
Password | 入力内容を「*」で表示するパスワードマスク | - |
実務でよく使う定型入力パターン(想定例)
| 用途 | 定型入力文字列 | 入力欄の表示例 | 備考 |
|---|---|---|---|
| 携帯電話番号 | 000\-0000\-0000 | ___-____-____ | ハイフンをリテラルとして表示 |
| 固定電話(市外局番3桁) | 000\-000\-0000 | ___-___-____ | 市外局番が2桁や4桁の場合は別パターンが必要 |
| 郵便番号 | 000\-0000 | ___-____ | ウィザードの「郵便番号」選択でも同じパターンが設定される |
| 社員番号(英字1文字+数字4桁) | L0000 | _____ | 「L」で英字必須、「0」で数字必須 |
| パスワード入力欄 | Password | *****(入力と同時にマスク) | 「Password」というキーワードを直接入力する |
実務別 入力規則・定型入力の活用パターン
パターン1:数量フィールドに0以上の制限をかける
在庫数・注文数・個数など「マイナスになってはいけないフィールド」には>=0の入力規則を設定します。入力規則メッセージには「0以上の整数を入力してください」と記載すると、入力者がすぐに対処できます。
さらに数値型フィールドに「フィールドサイズ」を「整数(Integer)」や「長整数(Long Integer)」に設定すると、小数の入力も自動的に防げます。入力規則と組み合わせることで、フィールドとしての型制限と値範囲制限の両方を確保できます。
パターン2:生年月日フィールドに将来日付を禁止する
「生年月日」フィールドは今日より後の日付を禁止すべきです。入力規則に<=Date()と設定し、メッセージに「今日以前の日付を入力してください」と書くことで、将来日付の誤入力を防止できます。
さらに「1900/01/01以降の日付のみ」という現実的な下限も設定したい場合は>=#1900/01/01# And <=Date()のようにAndで組み合わせます。日付リテラルは#で囲む点に注意してください。
パターン3:担当部署フィールドをリストに限定する
「担当部署」のような固定選択肢フィールドにはIn ("営業部","技術部","管理部","経営企画部")のような入力規則を設定することで、想定外の文字列入力を防止できます。ただし選択肢が多い場合はルックアップフィールドやコンボボックスを使う方が管理しやすいため、使い分けを検討してください。
パターン4:開始日と終了日の前後関係をレコードレベルで強制する
プロジェクトテーブルの「開始日」と「終了日」に「開始日は終了日以前でなければならない」という制約を設けたい場合、テーブルプロパティシートの「入力規則」に[開始日]<=[終了日]と入力します。入力規則メッセージには「開始日は終了日以前の日付を入力してください」と記載します。
この制約をフィールドレベルの入力規則で実現しようとすると、一方のフィールドが未入力の段階でもエラーが発生するなど不都合が生じます。2フィールドを比較するルールはレコードレベルで設定するのが基本です。
パターン5:パスワード入力欄を定型入力でマスクする
フォームのパスワードフィールドには、定型入力をPasswordに設定します。入力内容が「*」で表示されるため、画面を覗き見されても入力内容が分かりません。
この設定はテーブルのデザインビューで設定することも、フォームのコントロールプロパティから設定することもできます。フォームのテキストボックスの場合は、プロパティシートの「書式」タブにある「入力マスク」欄にPasswordと入力することで同様の効果が得られます。
入力規則・定型入力でよくあるトラブルと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
| 保存時に「既存データが入力規則に違反」と表示される | 設定前から違反データが存在する | 「はい」をクリックして設定を適用する。違反データは次回の編集時にエラーが出るので別途修正する |
| 入力規則が動作しない(エラーが出ない) | フォームのコントロールに独自の入力規則が設定されており、テーブル側の設定より優先されている | フォームコントロールのプロパティシートで「入力規則」欄を確認し、フォーム側にも同じ設定を入れるか削除してテーブル設定に統一する |
| 定型入力でハイフンが2重に入力される | 「区切り文字を含めて格納する」設定のまま、フォームが区切り文字を別途追加している | テーブルの定型入力設定で「区切り文字を含めずに格納する」に変更するか、フォームの定型入力を削除する |
| 定型入力の「…」ボタンが表示されない | フィールドのデータ型がメモ型(複数行テキスト)やOLEオブジェクト型になっている | 定型入力はテキスト型・数値型・日付型等に対して設定可能。メモ型には設定できない |
| Like演算子のパターンが一致しない | 定型入力で区切り文字が格納値に含まれており、Like式が実際の格納値と合っていない | 定型入力の格納方法を確認し、格納値に合わせてLike式を調整する(区切り文字を含む場合はLike式にも区切り文字を含める) |
| レコードレベルの入力規則式でエラーが出ない | 式内のフィールド名の綴りが間違っている(エラーなくスキップされてしまう) | 式ビルダー(「…」ボタン)でフィールド名を選択して入力し、スペル・大文字小文字を正確に合わせる |
MOS Access試験での入力規則・定型入力の出題ポイント
MOS Access 365試験では、入力規則と定型入力の操作はテーブルの管理スキル領域に含まれます。試験では実際にAccessを操作して指定の設定を行う形式で出題されます。出題範囲に含まれます。分野別の出題数・配点は公表されていません。
- フィールドプロパティの「入力規則」と「入力規則メッセージ」に指定の内容を設定できる:デザインビューを開き、対象フィールドを選択してプロパティを入力できる
- テーブルプロパティシートの入力規則を設定できる:リボン「テーブルデザイン」→「プロパティシート」を開き、テーブルレベルの入力規則を設定できる
- 定型入力ウィザードを使ってパターンを選択・設定できる:「定型入力」欄の「…」ボタンからウィザードを開き、パターンを選択して完了できる
- 定型入力の格納オプション(区切り文字の有無)を選択できる:ウィザード手順3の格納方法の選択肢を理解している
MOS試験 入力規則・定型入力の操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| デザインビューを開いてフィールドを選択できる | テーブルを右クリック→デザインビューでフィールド行をクリック | ★☆☆ |
| 「入力規則」欄に式を入力できる | フィールドプロパティの「入力規則」欄をクリックして式を入力する | ★☆☆ |
| 「入力規則メッセージ」にメッセージを設定できる | 「入力規則メッセージ」欄にテキストを入力する | ★☆☆ |
| テーブルプロパティシートを開けられる | リボン「テーブルデザイン」→「プロパティシート」ボタンをクリックする | ★★☆ |
| レコードレベルの入力規則を設定できる | テーブルプロパティシートの「入力規則」欄にフィールド名を[ ]で囲んだ式を入力する | ★★☆ |
| 定型入力ウィザードを起動できる | 「定型入力」欄の「…」ボタンをクリックしてウィザードを開く | ★★☆ |
| ウィザードで郵便番号・電話番号を設定できる | ウィザード一覧からパターンを選択して「完了」まで操作できる | ★★☆ |
| 区切り文字の格納オプションを選択できる | ウィザード手順3で「含める」「含めない」の違いを理解して選択できる | ★★★ |
まとめ:入力規則と定型入力でAccessのデータ品質を守る
本記事のポイントをまとめます。
- 入力規則と定型入力の違い:入力規則は「値の条件チェック(事後)」、定型入力は「入力書式の制限(事前)」。目的に応じて使い分ける
- フィールドレベルの入力規則:デザインビューのフィールドプロパティで設定。単一フィールドへの値範囲・パターン制限に使う
- レコードレベルの入力規則:テーブルプロパティシートで設定。2フィールド以上を比較する条件に使う
- エラーメッセージ:「何が問題か」「どう直せばよいか」をユーザーに伝えるメッセージを入力規則メッセージ欄に設定する
- 定型入力ウィザード:郵便番号・電話番号・パスワードなど代表的なパターンはウィザードで手軽に設定できる
- 区切り文字の格納方法:「含めて格納」と「含めずに格納」の違いを理解し、クエリや連携処理のしやすさを考慮して選択する
- MOS試験では:フィールドレベルとレコードレベルの2種類の設定場所と、定型入力ウィザードの操作手順を把握しておく
入力規則と定型入力はAccessデータベースの「入口の品質管理」です。フォームのバリデーションと違い、テーブルレベルで設定することでどのフォームや操作経路からデータが入力されても同じ制約が働きます。MOS試験対策としても実務のデータ管理としても、設定手順と使い分けをしっかりマスターしておきましょう。
PR
Microsoft 365対応のMOS試験シリーズ定番テキスト。Access・Excel・Wordを含むMOS試験全体の出題範囲と操作を体系的に学べます。フィールドプロパティの設定など試験頻出の操作を模擬問題で繰り返し練習できます。
PR
改善Excel パフォーマンスを底上げする仕事改善・効率化テクニック
データ品質管理の考え方はExcelとAccessに共通する実務スキルです。入力ルールの設計からデータ整合性の維持まで、業務データを「正しく管理する」視点が身につく一冊です。Accessの入力規則設計にも通じる考え方が学べます。
