Accessでコンボボックスの使い方をお探しですね。

広告

Accessのフォームにコンボボックス(プルダウン)を作る方法|入力ミスを防いで効率アップ

Accessのフォームでデータを入力していると、部署名や商品名、担当者名など、毎回同じような項目を手入力することってありますよね。

そのまま手入力すると時間がかかるだけでなく、「総務部」「総務 部」「総務」みたいに表記がバラバラになって、あとから検索や集計するときに困ることになります。

そんなときに便利なのが「コンボボックス」です。

この記事では、Accessのフォームにコンボボックス(プルダウンリスト)を作って、入力をラクにする方法を基本から実務で使えるコツまで分かりやすく解説します。

コンボボックスを使うとこんなに便利

Accessの「コンボボックス」というのは、フォームに配置できる入力欄の一種で、あらかじめ用意した選択肢から値を選べるプルダウンリストのことです。

Excelのドロップダウンリストに似ていますが、Accessならテーブルやクエリと連携できるので、業務用のデータベースで入力画面を作るときにすごく相性がいいんです。

たとえば、商品マスターに登録されている商品名をコンボボックスに表示すれば、入力する人は一覧から選ぶだけでOK。

わざわざ商品名を全部打ち込む必要がありません。

入力ミスが減って、作業も速くなる

コンボボックスの一番のメリットは、**入力の正確さとスピードを両方アップできる**ことです。

手入力だと、漢字の変換ミス、全角と半角の違い、余計なスペース、略称と正式名称が混ざるなど、いろんなパターンで表記がブレてしまいます。

こういう表記ゆれがあると、あとでクエリで抽出したりレポートで集計したりするときに、同じ内容なのに別物として扱われてしまいます。

コンボボックスで選択肢を固定しておけば、誰が入力しても同じ値が保存されるので、検索や集計も安定します。

画面もスッキリ

コンボボックスは、フォームのスペースを節約するのにも役立ちます。

似た機能に「リストボックス」というものもありますが、リストボックスは候補が常に画面に表示されるので、選択肢が多いとフォームが縦に長くなってしまいます。

コンボボックスなら、普段はテキストボックスみたいにコンパクトで、必要なときだけリストが開く仕組みです。

社員マスターや商品マスターみたいに候補がたくさんある項目でも、画面をスッキリ保ちながら選択入力ができます。

コンボボックスの作り方【基本編】

それでは実際に、Accessのフォームにコンボボックスを作ってみましょう。

配置する

まず、対象のフォームを**デザインビュー**で開きます。

リボンの「フォームデザイン」タブからコントロール一覧を表示して、「コンボボックス」を選んでフォーム上の好きな場所にクリックします。

環境によってはウィザードが立ち上がって、「候補をテーブルやクエリから取得するか」「自分で値を入力するか」を選びながら設定できます。

ウィザードが出なくても大丈夫。

配置したあとに「プロパティシート」から設定すればOKです。

「値集合タイプ」と「値集合ソース」を設定する

コンボボックスで最初に確認したいのが、**「値集合タイプ」**と**「値集合ソース」**です。

**値集合タイプ**は、プルダウンに表示する候補をどこから持ってくるかを決める設定です。

よく使うのは次の2種類です。

– **テーブル/クエリ**:部署名や商品名など、今後追加・変更される可能性がある項目に向いています。

マスター側を更新すれば自動的にコンボボックスの候補も変わるので、フォームをいちいち修正しなくて済みます。

– **値リスト**:選択肢が少なくて、ほとんど変わらない項目に使えます。

たとえば「未処理;処理中;完了」や「男性;女性;回答しない」みたいに、固定的な区分を直接入力する方法です。

ただし、値リストは候補が増えたときにフォームのプロパティを開いて直接編集する必要があります。

運用中に候補が変わる可能性があるなら、最初から「区分マスター」みたいなテーブルを作って、コンボボックスの値集合ソースに指定する方が後々ラクです。

テーブルよりフォームで設定する

実務では、テーブルに直接コンボボックスを設定するより、**フォーム側にコンボボックスを配置する**方法がおすすめです。

テーブルの「ルックアップ機能」は一見便利ですが、保存されている値と表示されている値の関係が分かりにくくなって、クエリやVBAで扱うときに混乱することがあります。

Accessでは、テーブルはデータの保管場所、フォームは入力・操作の画面、というふうに役割を分けて考えると、あとから修正しやすい設計になります。

使いやすくするためのプロパティ設定

コンボボックスを実務で使いやすくするには、配置するだけじゃなくて、プロパティの意味を理解することが大事です。

特に押さえておきたいのが、**「列数」「列幅」「連結列」「入力チェック」**の4つです。

「列数」「列幅」「連結列」で表示と保存を使い分ける

たとえば商品マスターに「商品ID」「商品コード」「商品名」があるとします。

画面には商品名を見せたいけど、実際に保存するのは商品IDにしたい、というケースがよくあります。

このとき、列数・列幅・連結列を正しく設定しないと、思った値が表示・保存されません。

– **列数**:値集合ソースから何列分を読み込むかを指定します。

商品ID、商品コード、商品名の3列を使いたい場合は「3」にします。

– **列幅**:それぞれの列をリスト上でどの幅で表示するかを指定します。

たとえば「0cm;0cm;6cm」と設定すると、1列目の商品IDと2列目の商品コードは非表示になって、3列目の商品名だけが見える状態になります。

非表示にした列も内部的には保持されているので、保存値として使えます。

– **連結列**:コンボボックスで選択したときに、実際に保存される列を指定します。

商品名を画面に表示しながら商品IDを保存したい場合、商品IDが値集合ソースの1列目なら連結列を「1」にします。

この設計にしておくと、商品名が変更されても過去の取引データは商品IDで正しく関連付けられます。

名称そのものを保存してしまうと、名称変更時に過去データとの整合性が崩れやすいので、マスターと連携する項目では**IDを保存する**考え方が基本です。

「入力チェック」でミスを防ぐ

入力ミスを防ぐのに効果的なのが、**「入力チェック」**(英語では「Limit To List」)という設定です。

このプロパティを「はい」にすると、リストに存在しない値を入力できなくなります。

複数人で同じフォームを使う場合や、集計対象になる項目では特に有効です。

ただし、現場で新しい候補を随時追加したい運用だと、「候補がまだマスターにないから入力できない」という問題も起こります。

その場合は、先にマスター登録を行う運用にするか、VBAで未登録値を自動追加する仕組みを検討するといいでしょう。

もっと使いやすくする実務テクニック

基本設定ができたら、次は入力する人が使いやすいフォームに仕上げていきましょう。

フォーカスが移動したら自動でリストを開く

たとえば、コンボボックスにカーソルが移動した瞬間に自動でリストを開くようにすると、毎回右側の下向き矢印をクリックする手間が省けます。

Tabキーで項目を移動しながら入力する業務では、この小さな改善が積み重なって大きな時短につながります。

フォームは、機能が正しいだけじゃなくて、**実際に入力する人の操作回数を減らす**視点で調整することが大切です。

自動でプルダウンを開きたい場合は、コンボボックスの**「フォーカス取得時」イベント**にVBAを設定します。

たとえばコンボボックス名が「cmbProduct」の場合、次のように書きます。

“`vba
Private Sub cmbProduct_GotFocus()
Me.cmbProduct.Dropdown
End Sub
“`

このコードは、対象のコンボボックスにカーソルが入ったタイミングでリストを開く処理です。

短いコードですが、入力画面の使い心地はかなり変わります。

特に、受注入力や日報入力みたいに同じフォームを何度も使う業務では、クリック数の削減が入力ストレスの軽減につながります。

コンボボックスを連動させる

さらに応用として、**複数のコンボボックスを連動させる**方法もあります。

代表例は、1つ目のコンボボックスで都道府県を選ぶと、2つ目のコンボボックスにはその都道府県に属する市区町村だけが表示される仕組みです。

商品分類を選んだら該当分類の商品だけを表示する、部署を選んだらその部署の担当者だけを表示する、といった使い方もできます。

候補が多いフォームでは、最初から全件を表示するより、段階的に絞り込めるようにした方が選択ミスを減らせます。

連動コンボボックスを作る場合は、親コンボボックスの値を子コンボボックスの抽出条件に使うクエリを用意します。

子コンボの値集合ソースにそのクエリを指定して、親コンボの**「更新後処理」イベント**で子コンボを再読み込みします。

たとえば親が変わったあとに、子の値をいったん空にしてから`Requery`することで、古い選択値が残る矛盾を防げます。

単に候補を絞り込むだけじゃなくて、前回選択した値が現在の親条件と合わない状態を避けることが、実務で安定して使えるフォーム作りのポイントです。

まとめ

Accessのフォームにコンボボックス(プルダウンリスト)を作って入力を効率化するには、単に候補を表示するだけじゃなくて、**どの値を見せて、どの値を保存し、どうやってミスを防ぐか**まで設計することが重要です。

最初は値リストで簡単な候補を表示するだけでも効果がありますが、業務で長く使うフォームなら、テーブルやクエリを値集合ソースにして、マスター管理と連動させる方法が向いています。

列幅を0cmにしてIDを隠す、連結列で保存値をコントロールする、入力チェックで候補外の値を防ぐ、といった設定を組み合わせることで、入力しやすくて集計もしやすいAccessデータベースに近づきます。

ぜひこの記事を参考に、使いやすいフォームを作ってみてください!

広告