ACCESS コンボボックスのプルダウンに複数列表示させる方法

コンボボックスのプルダウンに複数列表示させる方法

ACCESSのフォーム入力でよく利用されるのがコンボボックスです。
プルダウンと言い換えてもよいかもしれません。

このコンボボックスには、複数の列を表示させ入力をしやすくすることが可能です。

今回は、コンボボックスのプルダウンに複数列表示させる方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

コンボボックスに複数の列を表示

ACCESSのコンボボックスとは、プルダウン表示のことです。
このコンボボックスには、以下のように複数の列を表示することが可能です。

この例では商品マスターテーブルの商品IDと商品名の2列をコンボボックスに表示させています。
1列だけではユーザーが正しい候補を選択しにくいときに、複数列表示を利用すると便利です。

複数列を表示する方法

では、コンボボックスに複数の列を表示する方法を見ていきましょう。
まずはACCESSのフォームをデザインビューで作成します。

フォームデザイン

コンボボックスを作るには、テキストボックスを右クリックし、表示されたメニューから「コントロールの種類を変更」→「コンボボックス」を選択します。

今回はコンボボックスのプルダウンに以下のテーブルの値を表示します。

商品マスターを入れている、MST_商品テーブルです。
これをプルダウンに表示できるよう、コンボボックスのプロパティシートで「値集合ソース」に「MST_商品」を設定します。

その後、プロパティシートの書式タブで複数列を表示させる設定をします。
列数と列幅を以下のように設定します。

列数は、値集合ソースに指定したMST_商品テーブルの列、つまりフィールドを何列プルダウンに表示するかを設定する項目です。
MST_商品テーブルでは商品名が4列目にあり、そこまで表示させたいので「4」を指定しています。

列幅は指定した4列のプルダウン上での表示幅です。
0cmを指定することで表示させなくすることが可能です。

今回は、「0cm;2cm;0cm;6cm」と指定していますが、これはMST_商品テーブルの4つのフィールドに対して以下のように幅の指定をしていることになります。

商品識別ID0cm
商品ID2cm
商品区分ID0cm
商品名6cm

こうすることで、プルダウンには商品IDと商品名のみが表示されます。
このように設定することでコンボボックスに複数列を表示させることが可能です。

コンボボックスの幅と列幅

上記で列幅に指定した2cmと6cmを足すと8cmとなり、コンボボックス全体の幅と同じになるよう設定していることにも注意ください。
コンボボックスの幅と、ここで設定する列幅の合計値が異なるとコンボボックスとプルダウンの幅が変わってしまって違和感が出ます。

例えば、列幅の設定を「0cm;2cm;0cm;8cm」、コンボボックスの幅を8cmとしてみましょう。

この状態でフォームビューでコンボボックスを表示すると以下のようになります。

プルダウンの下側に横スクロールのバーが出てしまっていますね。
こうなると操作性が悪くなってしまいます。

どうしても列幅の合計をコンボボックス自体の幅より広くしたい場合はリスト幅の設定を「自動」から固定の値に変えましょう。
例えばリスト幅を10cmにしてみます。

すると、フォームビューでは以下のように表示されます。

プルダウンの下にあった横スクロールバーが消えています。
ただ、見栄えとしてはあまりよくないのでやはりこの場合はコンボボックス自体の幅を広げておく方が良いでしょう。

コンボボックスで選択した値を複数表示する

コンボボックスで値を選択すると、フォームに表示されるのはプルダウンに複数の列を表示していても、その最初の列のみになります。

これだと、入力後はフォームを見ただけでは分かりにくいときがあります。
できればプルダウンに表示していた列をそのまま表示したいですよね。

コンボボックスを修正することで以下のように表示することが可能です。

こちらの方が分かりやすいですよね。

では、作り方を見ていきましょう。

まずはフォーム自体のレコードソースを変更します。
こちらのフォームはTRN_売上明細というテーブルをレコードソースにしていますが、このテーブルには表示させたい商品名のフィールドがありません。

そこでクエリを作成してTRN_売上明細とMST_商品を商品識別IDでリレーションさせ、商品名をクエリに表示します。

今回はこちらのクエリと「test_combo」と命名しました。
フォームのデザインビューに戻し、レコードソースに作成したtest_comboを設定します。

すると、先ほどクエリでリレーションさせた商品名フィールドをフォームに設置できるようになります。
商品識別IDコンボボックスの右側に置きましょう。

こうすることで、商品識別IDコンボボックスで選択した商品の商品名が自動で表示できるようになります。
あとは、商品識別IDコンボボックスの列幅とリスト幅を調整して見栄えをよくしましょう。

コンボボックスの列幅は、商品識別IDコンボボックスの3cmと、商品名の7cmに合うように設定します。
こうすることでコンボボックスに表示されるプルダウンとテキストボックスの幅があって直感的にわかりやすくなります。

また、リスト幅はデフォルトでは「自動」ですが、これだとコンボボックスの幅と同じになってしまいます。
今回は商品名テキストボックスまで含めた幅で表示させたいので10cmと指定しています。

ここまでの修正を反映してできたのが以下のコンボボックスです。

プルダウンに必要な情報が表示され分かりやすく、かつ値を選択した後も商品名まで表示可能になっています。

以上、コンボボックスのプルダウンに複数列表示させる方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス紹介

最後までお読みいただき、ありがとうございました。