Accessでカレンダーから日付を選択する方法

概要

この記事の結論
Accessでカレンダーから日付を選ぶには、フォームをデザインビューで開き、日付を入力するテキストボックスの[日付選択カレンダーの表示]を[日付]に設定します。保存先は原則として日付/時刻型を使います。表示されない場合は、定型入力、書式、対象コントロール、編集可否を順に確認してください。

この記事でわかること

  • 日付は日付/時刻型に保存する
  • 表示設定と定型入力を確認する
  • 検索用入力欄は保存先と分ける
  • 終了日の時刻を取りこぼさない

この記事の主な内容

  1.  日付選択カレンダーの仕組みと使える場面
  2. フォームに日付選択カレンダーを設定する手順
  3. カレンダーが表示されないときの確認順
  4. 検索フォームで日付を選んで期間を絞る方法
  5. 入力ミスを減らす既定値と入力規則の使い分け
  6. 変更後の確認と保守しやすい日付入力の設計
  7. まとめ
  8. よくある質問

想定読了時間:約15分~20分


日付選択カレンダーの仕組みと使える場面

Accessの日付選択カレンダーは、日付を手入力する代わりに、カレンダー上の日を選ぶための機能です。通常の入力欄へ追加できるため、日付の選択だけが目的なら、独自のカレンダー画面をVBAで作る必要はありません。

例えば、受注フォームの「受注日」や、検索フォームの「開始日」「終了日」で利用できます。ただし、同じカレンダーを使っていても、前者は業務データの保存、後者は抽出条件の指定です。先に入力欄の役割を決めると、誤ってデータを書き換える事故を防ぎやすくなります。

保存する型と画面の見た目を分けて考える

「2026/09/26」と見える値でも、保存先が文字列の場合と、日付/時刻型の場合では扱いが異なります。日付の前後比較や日数計算に使う値は、原則として日付/時刻型に保存します。文字列に日付らしい見た目を付けるだけでは、適切な日付データの設計にはなりません。

書式は見た目、定型入力は入力の形式、カレンダーは入力の補助です。この3つを混同しないことが、表示されない原因を探す際の出発点になります。

確認するもの決めること例
テーブルのデータ型どんな値を保存するか日付/時刻型
テキストボックスの書式値をどう見せるか日付だけを表示
日付選択カレンダーの表示入力時にカレンダーを使うか日付
コントロールソースどのフィールドと結び付けるか受注日、または空欄
日付/時刻型が保存、書式が表示、カレンダーが入力補助を担う関係

標準カレンダーと古いカレンダー部品は区別する

古いAccessの説明には、ActiveXのカレンダー部品を配置する手順が登場します。本記事で扱うのは、テキストボックスに付属する標準の日付選択カレンダーです。標準機能を使うために、出所の不明なOCXを追加する必要はありません。

既存システムに独自の月間予定表がある場合は、日付を選ぶだけでなく、予約数や休日、担当者の予定を表示している可能性があります。そのような画面は、単純な日付選択へ置き換える前に、必要な機能を洗い出してください。


フォームに日付選択カレンダーを設定する手順

カレンダーの設定は、日付を入力するテキストボックスで行います。最初は検証用のフォームで1か所だけ設定し、選んだ日付が目的のフィールドに入ることを確認してから、ほかの入力欄へ展開すると作業範囲が明確になります。

作業前に入力欄と保存先を確認する

ここでは説明用に、T_受注テーブルの「受注日」を、F_受注フォームの「txt受注日」へ表示する構成を使います。名前は例なので、既存のテーブルやコントロール名へ読み替えてください。実データを扱う場合は、Accessを閉じた状態のコピーや適切なバックアップを用意します。

対象名前または設定役割
テーブルT_受注受注データを保存
フィールド受注日:日付/時刻型日付の保存先
フォームF_受注受注を入力する画面
テキストボックスtxt受注日日付の入力欄
コントロールソース受注日入力欄と保存先を連結

既存フィールドが短いテキスト型だった場合、いきなりデータ型を変更するのは避けます。「未定」「2026年秋」などの日付に変換できない値がないか確認し、別フィールドへの移行や例外の扱いを決めてから変更します。

プロパティシートから表示を設定する

1. ナビゲーションウィンドウでF_受注を右クリックし、[デザインビュー]を開きます。
2. 日付を入力するtxt受注日を選択します。隣の「受注日」というラベルではなく、値が入る枠を選びます。
3. F4キーでプロパティシートを表示します。上部の選択対象がテキストボックスであることを確認します。
4. [すべて]タブなどから[日付選択カレンダーの表示]を探し、[日付]を選びます。
5. [書式]は日付の表示形式を選び、[定型入力]は空欄にします。保存先フィールド側にも定型入力がないか確認します。
6. フォームを保存してフォームビューへ戻り、入力欄を選択します。カレンダーアイコンをクリックし、日付を選びます。

日本語UIの設定名やタブの配置は、Accessの表示環境によって差がある場合があります。見当たらないときは[すべて]タブで項目名を探すと、タブの違いに左右されず確認できます。

フォームを開いて日付入力欄を選び、カレンダー表示を設定して試す手順

選択できた後に保存まで確かめる

カレンダーで選んだ日付が画面に出たら、別のレコードへ移動するか、レコードを保存します。その後で同じレコードを開き直し、受注日が残っているか確認してください。フォームのデザイン保存と、入力データの保存は別の操作です。

別の日付が変わっていたら、コントロールソースを見直します。画面のラベルが「受注日」でも、別のフィールドへ連結されている可能性があるためです。見た目だけで保存先を判断しないことが大切です。


カレンダーが表示されないときの確認順

カレンダーが表示されない場合は、日付の設定、定型入力、選択している部品、編集状態の順で確認します。すべてのプロパティを同時に変えると、どれが原因だったのか分からなくなるので、変更前の値を控えて1項目ずつ試します。

定型入力が設定されていないか確認する

Microsoftは、日付/時刻型の定型入力と日付選択カレンダーを併用できないと説明しています。カレンダーを優先する場合は、対象入力欄と元フィールドの定型入力を確認します。見た目を「年/月/日」に揃えたいだけなら、書式を使う方法を検討してください。

定型入力を消すと、利用者がキーボードで入力する際の案内も変わります。変更後はカレンダー操作だけでなく、普段どおりの日付の手入力も試し、入力規則や既存のチェック処理と矛盾しないか確認します。

症状確認する場所対処の方向
表示設定の項目が見つからない選択対象の種類ラベルやフォーム全体ではなく入力欄を選ぶ
日付にしてもアイコンが出ない定型入力と保存先の型日付/時刻型と定型入力の有無を点検
検索用の空欄だけ表示が違う書式と表示設定非連結欄の書式を日付へ明示し、単独で確認
アイコンはあるが値を変えられない編集ロック、使用可能、フォームの更新可否読み取り専用にした意図を確認
設定を変えたのに元に戻る起動イベント、開いているファイルVBAや配布版の差を確認
日付は出るが保存できない入力規則、必須条件、保存先カレンダー表示と保存エラーを分けて調査
日付型、表示設定、定型入力、編集可否を順に確認するチェックリスト

読み取り専用の理由を先に確かめる

確定済み伝票や履歴画面では、日付を変更できない設計が正しいこともあります。編集ロックを解除する前に、その日付を変更してよい業務か、変更に承認や履歴が必要かを確認しましょう。

また、集計クエリなどを元にした画面では、入力欄の設定だけではデータを更新できません。検索結果を眺める画面と、編集用のフォームを分けると、不要な更新を防ぎながら原因も切り分けやすくなります。


検索フォームで日付を選んで期間を絞る方法

検索フォームで選ぶ日付は、通常、検索条件として一時的に使います。元の受注日や売上日へ直接連結すると、検索条件を変えるつもりでデータを書き換えてしまうおそれがあります。検索専用の非連結テキストボックスを用意しましょう。

非連結の日付入力欄を用意する

F_売上検索にtxt開始日とtxt終了日を置き、コントロールソースは空欄にします。書式を日付にし、日付選択カレンダーの表示を[日付]に設定したうえで、対象のAccess環境で表示と入力を確認します。テーブルからドラッグして作った欄は、連結が残っていないか特に注意してください。

検索用の日付を記憶させたい場合も、売上データとは別の設定や利用者別の条件として管理します。「非連結だから前回の日付が消える」という現象を、売上テーブルへの連結で解消しないようにします。

連結入力欄はデータを保存し、非連結入力欄は検索条件に使う違い

終了日は翌日未満で比較する

売上日時に時刻が含まれる場合、「終了日以下」だけでは、終了日の午後のデータが漏れることがあります。日単位の期間検索では、開始日の0時以上、終了日の翌日の0時未満という条件にすると、終了日を丸ごと含められます。以下はその考え方を使った設計例です。

例えば9月1日から9月30日を検索する場合、9月30日15時は含め、10月1日0時は含めません。上限を23時59分59秒に固定するより、翌日を除外する形のほうが意図を説明しやすくなります。

期間検索を開始日以上かつ終了日の翌日未満にして時刻付きデータを含める考え方

日時パラメーターを指定するSQLの例

次の例はT_売上の売上日時を絞る選択クエリです。F_売上検索を開き、両方の日付を入力してから実行する前提です。[作成]→[クエリデザイン]からSQLビューへ切り替え、実際の名前に合わせて入力します。

PARAMETERS
    [Forms]![F_売上検索]![txt開始日] DateTime,
    [Forms]![F_売上検索]![txt終了日] DateTime;
SELECT [売上ID], [売上日時], [金額]
FROM [T_売上]
WHERE [売上日時] >=
      DateValue([Forms]![F_売上検索]![txt開始日])
  AND [売上日時] <
      DateAdd(“d”, 1,
        DateValue([Forms]![F_売上検索]![txt終了日]));

DateValueは検索条件の時刻部分を取り除くために使っています。抽出対象の売上日時そのものは加工せず、境界になる条件側を日付に揃える構成です。SQLを貼り付けるだけで検索ボタンの動作が完成するわけではないため、結果を開く操作も別途設定します。

未入力、開始日と終了日の逆転、日付にできない文字がある場合は、実行前に入力を促します。片側だけの検索を認めたい場合は、「開始日のみ」「終了日のみ」「両方なし」で何を表示するかを決め、別の条件分岐を設計してください。


入力ミスを減らす既定値と入力規則の使い分け

カレンダーは入力を助けますが、業務上正しい日付かどうかまでは保証しません。既定値で入力の手間を減らし、入力規則で許容範囲を制限する、と役割を分けると、利用者にとって分かりやすい画面になります。

今日の日付を入れるときは項目の意味を確認する

受付日を当日で始めたい場合は、既定値にDate()を使う方法があります。受付日時を残すならNow()が候補です。ただし、請求日、納品予定日、生年月日など、当日であるとは限らない項目へ一律に今日を入れると、確認漏れを招きます。

既定値は新規入力時の補助であり、過去のレコードを一括で直す設定ではありません。また、フォームを開いた時刻とデータを確定した時刻は異なることがあるため、厳密な登録日時が必要なら、どの時点を記録するかを別に決めます。

前後関係は入力規則で確認する

開始日と終了日の両方を保存するテーブルでは、同じ行の値を比較するレコード入力規則を使います。両方必須なのか、終了日未定を認めるのかを決めたうえで、終了日が開始日以降になるように設定します。具体的な式と未入力の扱いは、関連記事でも説明していますのでご参照ください。

既定値は入力を補い、入力規則は保存できる値を制限する違い

休日を選択できないようにする、予約可能日だけを表示する、といった要求は、標準カレンダーの表示を変えるだけでは足りません。休日マスターや予約データを使う判定と、その結果をどう利用者へ伝えるかを設計します。必要な日が選べることと、保存を許可することは分けて考えましょう。

日付入力や期間検索の不具合を相談する

設定を見直しても解消しない場合や、複数のフォーム・保存先への影響が分からない場合は、対象画面と再現手順を整理してご相談ください。


変更後の確認と保守しやすい日付入力の設計

設定後は、選択できるかだけでなく、保存値と検索結果まで確認します。日付は見た目が同じでも時刻が含まれていることがあるため、確認中は一時的に時刻も見える表示にすると、取りこぼしの原因を見つけやすくなります。

正常な操作と境界の操作を試す

以下は、日単位の売上検索を想定した確認用ケースです。実施結果ではなく、運用前に試すための期待結果です。別の業務ルールがある場合は、結果欄を自社の要件へ合わせて変更してください。

確認する操作期待する結果
2026/09/01〜2026/09/30を指定対象期間だけを抽出
2026/09/30 15:00の売上を用意期間内として抽出
2026/10/01 00:00の売上を用意期間外として除外
開始日と終了日を同日にするその日1日を抽出
開始日が終了日より後実行前に修正を案内
日付が未入力決めた必須条件に沿って案内
月末や2028/02/29を選ぶ有効な日付として入力できる
フォームを閉じて開き直す保存用の日付が正しいレコードに残る
月末、未入力、逆転、時刻付き終了日を確認するテスト項目

変更箇所と確認結果を残す

変更したフォーム、コントロール名、変更前後の設定、Accessの製品名とビルドを記録します。複数人へフォームを配布している場合は、修正版を使っている人と旧版を使っている人が混在しないよう、配布対象と版を確認してください。

一度に独自カレンダーへ作り替える必要はありません。まず標準機能の設定を整え、次に入力規則と期間検索を見直し、それでも不足する予約表示や休日制御を専用画面として検討します。目的から改善範囲を決めることで、保守する箇所を増やしすぎずに済みます。

標準カレンダーから入力規則、検索条件、必要な専用画面へ段階的に改善する流れ

まとめ

Accessのカレンダー入力は、日付/時刻型、書式、カレンダーの表示設定を揃えるところから始めます。表示されないときは定型入力を確認し、選択できても保存できない場合は編集可否や入力規則を調べます。

検索用の日付は保存用の入力欄と分け、時刻を含むデータの期間抽出には「開始日以上・終了日の翌日未満」を使う設計を検討します。入力、保存、検索の3段階を確認することで、画面だけでは気付けない不具合まで見つけやすくなります。

日付入力や期間検索の不具合を相談する

既存Accessの調査・改修・保守をご相談いただけます。フォーム名、症状、発生する操作、変更した設定が分かると、確認すべき範囲を整理しやすくなります。


よくある質問

標準の日付選択カレンダーは、基本的にテキストボックスのプロパティで設定できます。予約状況や独自の休日表示が必要な場合は、追加設計が必要です。

定型入力、保存先のデータ型、書式、選択している部品を確認してください。まず編集できる単純な日付入力欄で試すと、表示設定とフォーム全体の問題を分けられます。

日付だけなら既定値のDate()が候補です。ただし、当日とは限らない項目に今日を入れると誤登録につながるため、業務上の意味を確認します。

保存値に時刻が含まれている可能性があります。日単位の検索では、終了日の翌日0時を上限にし、その値未満を対象にすると終了日の午後を含められます。

単純な日付選択なら、まず標準機能を検討します。既存の独自画面に予定表示などの機能がある場合は、その機能も必要か確認してから置き換えます。

検索欄のコントロールソースが業務フィールドに連結されている可能性があります。条件を一時的に受け取る欄は非連結にし、検索クエリへ渡す構成を確認してください。


参考情報

[1] TextBox.ShowDatePicker 参照内容:標準カレンダー表示
https://learn.microsoft.com/en-us/office/vba/api/access.textbox.showdatepicker

[2] Control data entry formats with input masks 参照内容:定型入力と日付選択カレンダーの競合
https://support.microsoft.com/en-us/access/control-data-entry-formats-with-input-masks

[3] Ways to add edit and delete records 参照内容:カレンダーによる入力
https://support.microsoft.com/en-us/access/ways-to-add-edit-and-delete-records

[4] DateAdd function 参照内容:期間末の翌日計算
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dateadd-function

[5] Introduction to data types and field properties 参照内容:日付/時刻型とデータ型
https://support.microsoft.com/en-us/access/introduction-to-data-types-and-field-properties

関連記事

Accessフォームをデザインビューで作成する方法

Accessのデータ型の種類と使い分け

Accessクエリの抽出条件に日付を指定する方法

TOP