Accessのコンボボックスの作り方をお探しですね。
広告
Accessのコンボボックス(プルダウン)の作り方を初心者向けに解説
Accessでデータ入力フォームを作るとき、ぜひ覚えておきたいのが「コンボボックス」です。
コンボボックスというのは、いわゆる「プルダウンメニュー」のこと。
あらかじめ用意したリストから項目を選んで入力できる便利な機能です。
これを使えば、手入力によるミスや表記のバラつきをなくせるので、スピーディーで正確なデータ登録ができるようになります。
この記事では、Access初心者の方向けに、コンボボックスの基本的な作り方から、別のテーブルのデータを表示する実践的な設定方法、さらに使いやすくする応用テクニックまで、わかりやすく説明していきます。
Accessのコンボボックス(プルダウン)って何?基本とメリット
Accessのフォームで使うコンボボックスは、自由に文字を入力できるテキストボックスと、リストから選ぶリストボックスのいいとこ取りをした便利な機能です。
普段は1行分のコンパクトなスペースだけですが、右端の矢印(▼)をクリックすると、選択肢がプルダウンで表示されます。
似た機能に「リストボックス」もありますが、これは最初から複数の行が表示されているので、フォームのスペースを結構使ってしまいます。
画面を広く使いつつ、直感的に操作できるという点で、コンボボックスはAccessで何か作るときの必須アイテムと言えるでしょう。
コンボボックスをフォームに入れると、こんなメリットがあります。
・入力ミスを防いでデータの正確さがアップ(表記のバラつきがなくなる)
・キーボードで文字を打つ手間が省けて効率的
・フォームのスペースを最小限に抑えられる
データベースを使っていて一番困るのが、「入力する人によってデータがバラバラになること」です。
たとえば、「株式会社」と「(株)」、「東京」と「東京都」のように入力ルールがバラバラだと、あとで集計したり検索したりするときに正しい結果が出ません。
コンボボックスで選択肢を固定してしまえば、こういった表記のバラつきを防げて、いつもキレイなデータを保てます。
【基礎編】コンボボックスの作り方と値の設定方法
それでは、実際にフォームにコンボボックスを作ってみましょう。
一番簡単なのは、フォームをデザインビューで開いて、上の「フォームデザイン」メニューから「コンボボックス」のアイコンを選んで、フォーム上の好きな場所に置く方法です。
すでにテキストボックスとして置いてある項目も、右クリックして「コントロールの種類の変更」から「コンボボックス」に変えることができます。
置いたばかりのコンボボックスは中身が空っぽなので、プロパティシートを開いて「リストに何を表示するか」を設定する必要があります。
コンボボックスに選択肢を表示する仕組みは、「値集合タイプ」と「値集合ソース」という2つのプロパティで決まります。
選択肢が少なくて、今後も変わらない場合(たとえば「男」「女」といった性別など)は、値集合タイプを「値リスト」に設定します。
そして、値集合ソースの欄に「”男”;”女”」のように、セミコロンで区切って直接文字を入力します。
これだけで、フォームビューに切り替えたときにプルダウンから男女を選べるようになります。
ただし、この「値リスト」方式は、選択肢が増えたり減ったりするたびに、フォームのデザインビューを開いてプロパティを直接書き換えないといけないのが弱点です。
商品名や顧客名のように、毎日データが追加されたり変更されたりする項目に値リストを使うと、メンテナンスがとても大変になります。
なので、実際の仕事では次に説明する「テーブルやクエリを参照する方法」がよく使われます。
用途に合わせて最適な設定方法を選ぶのが、メンテナンスしやすいAccessシステムを作るコツです。
【実践編】テーブルのデータをプルダウンで選べるようにする設定方法
実際の業務システムでは、別のテーブル(マスタデータ)に登録されている情報を、コンボボックスの選択肢として表示する方法が基本になります。
たとえば、「売上入力フォーム」の商品名欄に、「商品マスタテーブル」に登録されている商品の一覧をプルダウンで表示するといった感じです。
この方法を使えば、新しい商品がマスタに追加されると、フォーム側のコンボボックスにも自動的にその商品が選択肢として出てくるので、フォームの設定をいちいち修正する必要がありません。
テーブルのデータを表示する場合、コンボボックスのプロパティで「値集合タイプ」を「テーブル/クエリ」に設定して、「値集合ソース」に参照したいテーブル名(例:商品マスタ)を指定します。
ここからがAccess特有の大事なポイントなんですが、データベースの設計上、売上テーブルに保存すべきなのは「商品名」という文字列ではなく、商品を識別する「商品ID(数値)」です。
でも、入力する人にとって「商品ID:105」と画面に表示されても、それがどの商品なのかわかりませんよね。
そこで、プロパティの列設定を工夫して、「保存するのはIDだけど、画面に見せるのは名前」という状態を作ります。
この設定を実現するために、次の4つのプロパティを正しく組み合わせます。
・列数:取得するデータの列数(IDと名前の2列を取得するなら「2」)
・列幅:各列の表示サイズ(「0cm;5cm」と設定すると1列目のIDが非表示になる)
・連結列:実際にテーブルに保存する列の番号(IDを保存するなら「1」)
・コントロールソース:入力したデータを保存する先のフィールド名
列幅を「0cm」に設定すると、ユーザーには2列目の「商品名」だけがプルダウンに表示されます。
ユーザーが商品名を選ぶと、Accessの内部では連結列で指定した1列目の「商品ID」が自動的に取得されて、指定したフィールドに数値として正しく保存されます。
この「IDを隠して名前を表示する」というテクニックは、Accessでシステムを作るときに絶対に必要な重要ノウハウなので、しっかり設定手順を覚えてください。
もっと使いやすく!コンボボックスの便利機能と応用設定
基本と実践の作り方がわかったところで、コンボボックスをさらに使いやすくする応用テクニックを紹介します。
毎日使うフォームでは、ちょっとした使い勝手の良さが作業効率に直結します。
たとえば、キーボードで入力している人が、コンボボックスにカーソルが移動するたびに、わざわざマウスに持ち替えて右端の矢印をクリックするのは面倒ですよね。
こういう場合は、「フォーカス取得時」のイベントにVBAを1行だけ書いて、自動でドロップダウンリストが開くように設定すると、ストレスがぐっと減ります。
また、データの正確さを守るための設定として「入力チェック(LimitToList)」プロパティの活用があります。
コンボボックスは、普通の状態だとリストにない値を手入力することもできてしまいます。
でも、プロパティシートのデータタブにある「入力チェック」を「はい」に変えると、リストにない値が入力されたときにエラーメッセージが出て、登録を強制的にブロックできます。
キーワードの表記バラつきを完全に防ぎたい場合や、未登録の顧客コードなどを間違って入力させたくないときには、この入力制限の機能がとても役立ちます。
さらに高度なシステムになると、複数のコンボボックスを連動させる「絞り込み」という方法もよく使われます。
代表的な例が、住所入力のときの「都道府県」と「市区町村」の連動です。
1つ目のコンボボックス(親)で「北海道」を選ぶと、2つ目のコンボボックス(子)の選択肢が自動的に北海道内の市区町村だけに切り替わる仕組みです。
これは、子コンボボックスの値集合ソース(クエリ)の抽出条件に親コンボボックスの値を指定して、親の更新後処理で子のリストを再読み込み(Requery)することで実現できます。
設定のハードルは少し上がりますが、選択肢がすごく多い場合には必須の機能なので、基本操作に慣れたらぜひチャレンジしてみてください。
広告
