Excelのプルダウン管理をAccess入力フォームで整える方法

概要

この記事の結論
Accessの入力フォームなら、候補の一覧を一つのマスターテーブルで管理し、利用者には同じ選択画面を提供できます。名前を表示してIDを保存する設計にすると、表記揺れや候補の修正漏れも減らせます。ただし、候補の追加だけが悩みならExcelのテーブル参照でも改善可能です。移行前に、入力人数、変更頻度、過去データの扱いを整理しましょう。

この記事でわかること

  • Excelで直せる問題とAccessへ移す判断
  • 候補マスターと入力データを分ける
  • 名前を表示してIDを保存するコンボボックス
  • 候補の追加と廃止を安全に運用する
  • 連動する選択肢と入力エラーを整える

この記事の主な内容

  1. Excelで直せる問題とAccessへ移す判断
  2. 候補マスターと入力データを分ける
  3. 名前を表示してIDを保存するコンボボックス
  4. 候補の追加と廃止を安全に運用する
  5. 連動する選択肢と入力エラーを整える
  6. Excelから移す前後の確認と共同利用
  7. 小さく導入して運用を定着させる
  8. よくある質問

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


Excelで直せる問題とAccessへ移す判断

プルダウンの維持が面倒でも、すぐにAccessへ移す必要はありません。まず、候補を各セルへ直接書いているのか、共通の一覧を参照しているのかを確認します。候補をExcelテーブルにまとめ、その一覧を利用するドロップダウンへ変更すると、候補追加のたびに多数のセルを直す運用を改善できます。[参考3]

ただし、候補の追加と入力先の行追加は別の問題です。候補一覧が更新されても、入力先で規則が外れたセルや、別の範囲を参照するセルが残っていれば統一できません。新しい行、コピー貼り付け、複製したシートの三つで、実際に同じ候補が出るかを確かめてください。

状況先に試す方法Accessが有効になる条件
候補が少なく担当者も固定Excelの候補テーブルと入力規則複数の台帳で同じ候補を共有したい
毎月候補を追加する共通の候補参照と管理者の明確化名称変更や廃止を一元管理したい
入力が複数部署にまたがる入力項目とルールの整理入力画面と保存データを分けたい
スマートフォンでも入力したいWebフォーム等も比較Access単体のデスクトップ利用では要件に合わない

Accessへ移す目的は、ドロップダウンを付けること自体ではありません。「誰が候補を変え、どの画面へ反映し、過去の記録をどう残すか」を一つの運用にすることです。この管理が必要なら、フォームとテーブルを分ける利点が大きくなります。

AccessのExcel改善とAccess移行の選び方を示した図

候補マスターと入力データを分ける

候補マスターとは、部署や商品など、繰り返し選ぶ値の原簿です。入力データには部署名そのものではなく部署IDを保存し、表示時に名称を参照する形を基本にします。同じ「営業部」でも別会社の部署であれば、別のIDとして扱えます。

ここでは架空の作業受付を例にします。M_部署に部署の候補を、T_受付に実際の受付記録を保存します。以下はWindows版Accessの通常のACCDBを想定した設計例です。既存ファイルを直接変更せず、コピーした検証用データベースで進めてください。

テーブルフィールドデータ型と設定用途
M_部署部署IDオートナンバー型・主キー候補を一意に識別
M_部署部署名短いテキスト・必須画面に表示する名称
M_部署有効Yes/No・既定値True新規選択を許すか
M_部署表示順数値型・長整数候補の並び順
T_受付受付IDオートナンバー型・主キー受付を識別
T_受付受付日日付/時刻型・必須受付の日時
T_受付部署ID数値型・長整数・必須選択した部署を保存

M_部署の部署IDとT_受付の部署IDを、[データベースツール]の[リレーションシップ]で結びます。既存データに不正なIDがないことを確認して、参照整合性を設定します。これは「存在しない部署IDを受付へ保存しない」ための仕組みです。履歴を守るため、関連レコードの連鎖削除は安易に有効にしません。

部署名を変更すると、IDから現在の名称を表示する過去の受付も新名称で見えます。当時の帳票名を再現したい場合は、受付時名称を別項目へ保存する、または有効期間を持つ履歴マスターを設計します。名前をIDへ置き換えるだけで過去の表示まで固定されるわけではありません。

Accessの候補マスターと入力データの関係を示した図

名前を表示してIDを保存するコンボボックス

コンボボックスは、候補を一覧から選べるフォームの部品です。重要なのは、候補の取得先である[値集合ソース]と、選んだ値の保存先である[コントロールソース]を分けて設定することです。両者を逆に考えると、選べるのに受付へ保存されない画面になります。[参考1]

ウィザードで作り設定を照合する

1. T_受付を選択し、[作成]からフォームを作り、F_受付として保存します。

2. フォームをデザインビューで開き、コントロールウィザードを有効にしてコンボボックスを配置します。

3. テーブルまたはクエリから値を取得する選択肢を選び、M_部署の部署IDと部署名を指定します。

4. キー列を非表示にし、選択した値の保存先としてT_受付の部署IDを選びます。ラベルは「担当部署」にします。

5. コンボボックスの名前をcbo部署にし、F4でプロパティシートを開いて下表を確認します。

プロパティ設定例意味
コントロールソース部署ID受付テーブルの保存先
値集合タイプテーブル/クエリ候補を表から取得
値集合ソース下記SELECT文候補のIDと名称
連結列1先頭列のIDを保存
列数2IDと名称の2列
列幅0cm;5cmIDを隠して名称を表示
入力チェックはいリストにない文字の確定を拒否

SELECT [部署ID], [部署名]
FROM [M_部署]
ORDER BY [表示順], [部署ID];

[入力チェック]を「はい」にしても、未選択のNullは別の扱いです。部署の未入力を禁止するには、保存先フィールドの[値要求]も「はい」にします。「一覧外を拒否」と「必ず選ばせる」は二つの設定だと覚えてください。
[参考2]

試験データとして部署ID=1の「営業部」を選択し、別の受付へ移動して保存します。その後T_受付を確認し、部署名ではなく数値の1が保存されたかを調べます。フォームを閉じて開き直しても「営業部」が表示されることまで確認すれば、表示と保存の両方を検証できます。

Accessのコンボボックスの表示と保存を示した図

候補の追加と廃止を安全に運用する

候補の追加はM_部署へ行い、受付フォームの候補一覧を再取得します。候補追加用フォームを閉じた後など、利用者が理解しやすいタイミングでcbo部署.Requeryを実行する設計にします。候補マスターへ行が増えただけでは、開いたままの一覧がその場で更新されるとは限りません。

部署が廃止されても、過去の受付が参照している行は削除しません。有効をFalseにし、新規受付では選べないようにします。ただし値集合ソースを単純に「有効=True」へ絞ると、廃止部署を持つ過去レコードの名称がコンボボックスに表示されなくなる場合があります。

用途候補の扱い画面の方針
新規受付専用フォーム有効な部署だけ廃止候補を選ばせない
過去の受付を閲覧廃止部署も参照結合クエリの名称を読み取り専用で表示
既存受付の部署変更有効候補と現在値を考慮履歴表示を保ち、不正な変更を検査
部署名の改称現在名と当時名を区別帳票の再現要件に合わせて保存

初心者には、新規入力と過去閲覧を別画面にする構成が分かりやすくなります。同一画面で扱う場合は、現在レコードの廃止部署を候補に残すクエリと、変更時に廃止候補を拒否する検証が必要です。まず基本の2列コンボを完成させてから、この運用を追加してください。

Accessの候補の追加と廃止の流れを示した図

Accessの教科書でプルダウン業務の改善を相談する

候補や集計条件が部署ごとに異なる、既存の画面を直せる担当者がいないなど、プルダウンの手順だけでは解決しない場合は、現在のExcelと業務の流れを整理して相談すると検討が進みます。Accessの教科書のお問い合わせで、対象データ、利用人数、困っている操作をお知らせください。


連動する選択肢と入力エラーを整える

「事業部を選ぶと部署候補が絞られる」といった連動コンボでは、上位の値を変更したときに下位の値を消してから再取得します。部署候補だけを変えると、以前選んだ別事業部の部署IDが残り、見た目は空欄でも保存値は不正という状態になりかねません。

説明用にM_部署へ事業部IDを追加し、F_受付のcbo事業部で選んだ事業部に限定します。部署用の値集合ソースの条件は「WHERE [事業部ID]=Forms![F_受付]![cbo事業部]」です。この条件はF_受付が開いている前提で、フォーム名と部品名を完全に一致させます。

‘ F_受付のcbo事業部 更新後処理
rivate Sub cbo事業部_AfterUpdate()
    Me!cbo部署 = Null
    Me!cbo部署.Requery
End Sub

この例は連動の基本だけを示しています。既存レコードを表示する際にも、適切な事業部の候補へ再取得する処理が必要です。連続フォームでは一つの値集合ソースを複数行が共有するため、行ごとの表示が空欄になる問題もあります。まず単票フォームで実装し、連続フォームへは同じ設計を無条件に流用しないでください。

症状まず見る場所修正の方向
選べるが保存されないコントロールソース保存先の部署IDへ連結
名前でなく番号が見える列幅・連結列IDを非表示にして名称列を表示
新しい候補が出ない値集合ソース・再取得候補を保存してRequery
型が一致しない保存先の型通常のオートナンバーに対し長整数を使用
廃止後に過去の表示が消える候補の有効条件閲覧用名称と選択候補を分ける
Accessの連動コンボの更新順序を示した図

Excelから移す前後の確認と共同利用

Excelの名称をAccessへ取り込むときは、名称をIDへ対応付ける表を先に作ります。前後の空白や表記の違いを点検し、「営業」「営業部」を同じ部署とみなすかは管理者が判断します。文字が似ているという理由だけで自動統合すると、別組織の記録が混ざるおそれがあります。

本番テーブルへ直接追加せず、一時取込テーブルで未対応の名称を抽出します。対応する部署IDがない行、複数の候補が一致する行、未入力の行を分けて修正してください。すべての行に正しいIDが付いた後、件数と代表レコードを比較してから移行します。

試験期待する結果
正常な部署を選択して保存部署IDが保存され、再表示で名称が出る
必須の部署を空欄にする保存できず、選ぶべき項目が分かる
一覧外の部署名を入力受け付けず、候補の登録方法へ案内
候補を追加して再取得新規候補を選べる
廃止部署を持つ過去受付を表示過去の部署を識別できる
別担当者が同時に利用自分の画面が他人の操作で切り替わらない

複数人利用では、フォーム等を置くフロントエンドを各PCへ配布し、データを共有バックエンドへ分ける構成を検討します。OneDriveなどの同期フォルダにある同じACCDBを直接同時編集する方法は採用しません。画面を分けてもアクセス権限が自動で整うわけではないため、ファイル権限や必要に応じたサーバー側の制御も確認します。

Accessの移行前後の確認ポイントを示した図

小さく導入して運用を定着させる

初回の対象は、候補が頻繁に変わり、入力ルールの維持に困っている一つの台帳に絞ります。最初から全帳票を作り直すと、比較対象が増えて移行確認が難しくなります。入力だけAccessへ移し、月次の分析や提出用の加工をExcelへ残す方法も選べます。

導入前に、候補修正にかかる時間、表記修正の件数、未入力で差し戻した件数を記録します。導入後も同じ期間と件数で比べ、操作時間だけでなく、入力者が迷う場面や管理者の確認時間も測ります。削減効果は業務と設計次第なので、一律の削減率は置きません。

管理者向けには、候補追加、名称変更、廃止、誤設定からの復旧の四つの手順を残します。利用者向けには「候補がない場合は自由入力せず管理者へ連絡する」と案内します。担当者交代でも同じルールを守れることが、フォーム化を長く役立てる条件です。

Accessの入力フォームの段階導入を示した図

よくある質問

はい。候補の修正漏れが主な問題なら、候補一覧をExcelテーブルにまとめ、同じ参照先を使う入力規則へ統一する方法を先に試せます。ただし、候補の更新と、新しく増やした入力行への規則の適用は別です。行追加やコピー後にも同じ候補が表示されるか確認しましょう。複数の台帳をまたいで候補を管理したい、変更履歴を残したいといった要件が加わる場合に、Accessへの移行を比較すると判断しやすくなります。

単純な記録では名前を保存する設計もありますが、共通の候補を管理するならID保存が扱いやすくなります。表記揺れがあっても同じIDで集計でき、改称時も原則としてマスターを修正すれば済むためです。ただし現在名を参照するだけでは、過去の帳票も新名称で表示されます。当時の名称を再現する必要がある場合は、受付時名称の保存や履歴マスターを追加します。「ID保存なら履歴も自動で守られる」と考えないことが大切です。

いいえ。コンボボックスの入力チェックを「はい」にする設定は、一覧にない入力値の確定を制限するものです。未選択を表すNullは別途扱うため、保存先テーブルの部署IDで値要求を「はい」にする必要があります。フォーム側にも「担当部署を選択してください」という案内を用意すると、直す場所が分かりやすくなります。設定後は一覧外の文字、完全な空欄、正常な候補の三通りを試し、保存できる条件が業務ルールと合うか確認してください。

過去の受付などから参照されている候補は、原則として削除せず無効化します。削除すると履歴から名称をたどれなくなるほか、参照整合性によって削除が拒否される場合があります。有効フラグで新規選択を止め、過去の閲覧では名称を表示できるようにしてください。候補を有効な行だけに絞ると、既存レコードのコンボ表示が空欄になることもあります。新規入力と履歴閲覧を分けるなど、表示と選択を別々に設計すると安全です。

基本の候補一覧は、コンボボックスウィザードとプロパティの設定で作れます。まずは一つのマスターから選び、IDを保存するフォームを完成させるのがおすすめです。一方、候補追加後の即時反映、上位項目に連動する絞り込み、複雑な入力チェックには、マクロやVBAを使うことがあります。コードを増やす前に、必要な動作と設定場所を文章で整理してください。作成者以外が保守できるよう、フォーム名、部品名、候補の管理手順も残します。

フォームの設定だけでは、すべての変更経路を防げません。利用者がテーブルを直接開ける場合や、別の取込処理がある場合には、フォームの検査を通らずにデータが変わる可能性があります。必須や参照整合性はテーブル側にも設定し、ファイルへのアクセス権と配布方法を整えます。厳密な権限制御や監査が必要なら、データをSQL Serverなどへ置く構成も検討します。画面の使いやすさとデータの保護は、分けて設計することが重要です。

まとめ

プルダウンの問題は、選択部品の設定と候補管理の運用に分けて解決します。Excelの候補テーブルで十分ならその改善を優先し、複数の画面や担当者で共通管理したい場合にAccessを検討しましょう。Accessでは名前を表示してIDを保存し、未入力、廃止候補、過去の表示、取込経路まで確認すると、入力の揺れを抑えられます。

Accessの教科書でプルダウン業務の改善を相談する

候補や集計条件が部署ごとに異なる、既存の画面を直せる担当者がいないなど、プルダウンの手順だけでは解決しない場合は、現在のExcelと業務の流れを整理して相談すると検討が進みます。Accessの教科書のお問い合わせで、対象データ、利用人数、困っている操作をお知らせください。


関連記事

Accessプルダウンの作成方法

Accessテーブル作成前の正規化の手順

Accessでレコードを論理削除する方法

Accessフォームの定型入力の設定方法

参考情報

[参考1]Microsoft ComboBox.BoundColumn
https://learn.microsoft.com/en-us/office/vba/api/access.combobox.boundcolumn

[参考2]Microsoft ComboBox.LimitToList
https://learn.microsoft.com/en-us/office/vba/api/access.combobox.limittolist

[参考3]Microsoft ドロップダウン リストを作成する
https://support.microsoft.com/ja-jp/excel/get-started/create-a-drop-down-list

[参考4]Microsoft Form.Requery
https://learn.microsoft.com/en-us/office/vba/api/access.form.requer

TOP