フォームにコンボボックスやリストボックスを使用すると、一覧のリストの中から選択できるようになります。
作成方法はいくつかありますが、コンボボックスとリストボックスは、それぞれ特徴があります。
プロパティの設定でさまざまなカスタマイズができます。
コンボボックス/リストボックスの作成
フォームにコンボボックスを作成する方法は、いくつかあります。
- [コンボボックスウィザード][リストボックスウィザード]を使用して対話形式で作成する
- ウィザードを使用しないで作成
- テキストボックスからコンボボックス/リストボックスへコントロールの種類を変更
- テーブルのルックアップでコンボボックス/リストボックスを作成して挿入
参考リスト ボックスまたはコンボ ボックスを追加する - Microsoft サポート(Microsoft)
ウィザードを使用して対話形式で作成
[フォームデザイン]タブの[コントロール]グループにあるコントロールの一覧から[コンボボックス]または[リストボックス]を選択して挿入します。
対話形式で作成する方法については、以下の記事を参考にしてください。
-
フォームのコンボボックスの値でレコードを抽出
フォームにコンボボックスを作成して、そのリストから選択して一致するレコードを抽出できるようにします。 ウィザードを使い、コンボボックスの値は ...
上記は、コンボボックスの作成方法を記していますが、リストボックスも同じように作成できます。
ウィザードを使用するには、[コントロールウィザードの使用]がオンになっていることを確認します。
[コンボボックス]も[リストボックス]も、ウィザードを使用せずにプロパティで設定することもできます。
コントロールの種類の変更
テキストボックスをコンボボックスやリストボックスへ変更することができます。
テキストボックスを右クリックしてショートカットメニューの[コントロールの種類の変更]から[リストボックス]、または[コンボボックス]を選択します。
[コンボボックス]から[リストボックス]へ、[リストボックス]から[コンボボックス]へ変更することもできます。
テーブルのルックアップでコンボボックス/リストボックスを作成
テーブルのルックアップで[コンボボックス]、または[リストボックス]を設定した場合は、フォームでは自動的にコンボボックス、リストボックスとなります。
ルックアップウィザードについては、以下の記事で解説しています。
-
ルックアップウィザードでコンボボックスの設定(別のテーブルから値取得)
Accessのテーブルで、フィールドに入力する値をコンボボックスから選択する方法です。 コンボボックスとは、フィールドの値を入力する代わりに ...
-
ルックアップウィザードを使用してドロップダウンリストを設定(値を直接入力)
テーブルのデータ型には、[ルックアップウィザード]というのがあります。 ルックアップウィザードを選択して、ウィザードに従って設定していくと、 ...
コンボボックスのプロパティ設定
どういう作成方法であっても、コンボボックス/リストボックスのプロパティは同じです。
ウィザードを使用すると、自動的にいくつかのプロパティは設定されますが、完成後に変更できます。
ここでは、コンボボックスのプロパティの設定について解説します。
プロパティの表示
以下は、[フォームデザイン]タブの[コントロール]グループにあるコントロールの一覧から[コンボボックス]を選択して挿入しています。
ウィザードを使用せずにコンボボックスを追加して、プロパティを表示しています。
プロパティを表示するには、[フォームデザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。
プロパティシートの[選択の種類]が[コンボボックス]と表示されていることを確認します。
コンボボックスには、[非連結]と表示されます。
[非連結]とは、テーブルやクエリのデータがもとになっていないということです。フォームをテーブルやクエリをもとに作成した場合は、[非連結]とは表示されません。
テーブルやクエリを基に作成したフォームでは、目的のフィールドを挿入すると、フィールド名(コントロールソースプロパティ)が表示されます。
または、キーボードから[F4]キーを押してもプロパティを表示できます。プロパティの表示/非表示の切り替えができます。
そのほか、コンボボックスで右クリックしてショートカットメニューから[プロパティ]をクリックしても表示できます。
このままフォームビューに切り替えても、コンボボックスのデータは空っぽです。
コンボボックスに表示する値を設定
コンボボックスのプロパティ[データ]タブに[値集合ソース]と[値集合タイプ]があります。
ここでコンボボックスに表示する値を設定します。
[値集合タイプ]には、3つの選択肢があります。
- テーブル/クエリ
- 値リスト
- フィールドリスト
[テーブル/クエリ]を選択すると、[値集合ソース]には使用できるテーブルとクエリが表示されます。
[値リスト]を選択すると、表示するリストを直接入力できるようになります。
文字列との区切りは、セミコロン[;]を使用します。保存すると、文字列は自動的に["]で囲まれます。
[フィールドリスト]を選択すると、値の取得元のフィールドの一覧を選択できます。
たとえば、以下のように[値集合ソース]に[T_商品一覧]を選択して、[値集合タイプ]を[フィールドリスト]にすると、
テーブル[T_商品一覧]のフィールド名がコンボボックスのリストに表示されるようになります。
リストの列数と列幅
[値集合ソース]には、[T_商品一覧]を選択してリストを表示するようにしています。
テーブル[T_商品一覧]は、以下のように5つのフィールドがあります。
既定では、1列目の[商品ID]しか表示されません。
テーブルの1列目と2列目を表示するには
コンボボックスのリストに、テーブルの1列目と2列目を表示したい場合の方法です。
コンボボックスのプロパティを[書式]タブに切り替えます。
[列数]を[2]にして、[列幅]を指定します。列幅は[;](セミコロン)で区切ります。
入力する場合は、[1;3]のように入力してかまいません。[cm]は自動で表示されます。
フォームビューに切り替えると以下のように2列が表示されるようになります。
参考このとき水平スクロールバーが表示されるようになりますが、これはプロパティの[リスト幅]が[自動]になっているためです。
水平スクロールバーを非表示にするには、[リスト幅]を[列幅]に合わせた数値にします。
ここでは、[リスト幅]を[4cm]すればOKです。
また、コンボボックスの[幅]も同じにしておくと、綺麗なコンボボックスになります。
リストから選択すると、表示されている1列目の値のみが表示されます。
選択後に表示されるリストの列幅に合わせてコンボボックスの幅を調整してもいいと思います。
コンボボックスの2列目の値をテキストボックスに表示する方法については、以下の記事で解説しています。
-
コンボボックスの2列目の値をテキストボックスに自動表示するには
Accessのフォームでコンボボックスの2列目の値を取得する方法です。 コンボボックスの更新後処理の[マクロビルダー]か、[コードビルダー] ...
テーブルの2列目と3列目を表示したい場合
コンボボックスのリストに、テーブルの2列目と3列目を表示したい場合の方法です。
[列数]を[3]にして、[列幅]を[0cm;2cm;3cm]にします。
[リスト幅]と[幅]も調整します。
コンボボックスのリストは以下のような表示になります。
リストから選択すると、表示リストの1列目の値が表示されます。
リストの並べ替え
コンボボックスに表示するリストを[商品ID]の降順に並べ替えたい場合の方法です。
[列数]を[3]にして、[列幅]を[0cm;2cm;3cm]にしている場合です。
[データ]タブの[値集合ソース]の右端にある[…]をクリックします。
以下のウィンドウが表示されますので、[はい]をクリックします。
テーブルを基にしてクエリビルダーが起動されました。
このテーブルを基にしてクエリを作成しますか?
クエリビルダーが表示されますので、3列を順番どおりにデザイングリッドに登録します。
そして、[商品ID]の[並べ替え]で[降順]を選択します。
[実行]をクリックして並びを確認します。
クエリビルダーの[閉じる]ボタンをクリックします。
以下のメッセージウィンドウが表示されますので、[はい]をクリックします。
SQLステートメントの変更を保存し、プロパティの設定を変更しますか?
フォームビューで確認すると、[商品ID]の降順の並びで表示されます。
設定後の[値集合ソース]プロパティには、以下のように長い文字列が並んでいます。再編集したい場合や確認する場合は、[値集合ソース]の[…]をクリックします。
コンボボックスウィザードを使用した場合も、テーブル/クエリ名ではなく以下のように表示されていることがあると思います。
フィールドの並べ替え
クエリビルダーでフィールドの並び順なども変更することができます。
たとえば、クエリビルダーで以下のようにフィールドの並びを[商品コード][商品][商品ID]の順に変更します。
コンボボックスのリストの並びは以下のようになります。
以下の画像は、プロパティで[列幅]を[2cm;2cm;1cm]にしています。
[連結列]を[1]にしていれば、この場合、連結列は[商品コード]になります。連結列は重要なので、気をつけてください。
リスト行数
[リスト行数]は既定で[16]となっています。
リスト行数が16よりも大きい場合は、自動的に垂直スクロールバーが表示されます。
リスト行数が16より小さい場合は、リスト数に合わせなくても空白行が表示されることはありません。
連結列
[連結列]とは、リストのどの列をコントロールの値として使用するかを示すものです。データとして保存される値にもなります。
[列数]プロパティで設定した列の左から1として数えます。
連結列の既定値は[1]です。
ここでは、[0cm;2cm;3cm]として、1列目は非表示にしていますが、[連結列]は1列目の[商品ID]になります。
テーブルに主キーを設定している場合などは、主キーを連結列にすることが多いです。
参考クエリビルダーでフィールドの並びを変更した場合も気をつけてください。
コンボボックスの連結列は、どのフィールドになっているかを確認するには、非連結のテキストボックスを挿入して、[コントロールソース]プロパティにコンボボックスボックスの名前を入力してみてください。
フォームビューに切り替えて、テキストボックスに表示される値が目的のフィールドの値になっていない場合は、連結列か、フィールドの並びを変更してください。
入力チェック
コンボボックスは、リスト以外の値が入力できます。
リスト以外の値を入力させないようにするには、[入力チェック]を[はい]にします。
[はい]にすると、リスト以外の値を入力した時に、以下のメッセージウィンドウが表示されます。
指定した項目はリストにありません。
リストから項目を選択するか、リスト項目と同じテキストを入力してください。
参考入力チェックについては、以下の記事で解説しています。リストボックスのプロパティには、[入力チェック]の項目はありません。
-
コンボボックスにリスト以外の値が入力されないようにするには
テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...
値リストの編集の許可
[値リストの編集の許可]は、[値集合タイプ]で[値リスト]を選択した場合の動作になります。
[値リストの編集の許可]を[はい]に設定すると、コンボボックスのリストに表示する値をフォームビューから編集できるようになります。
頻繁に変更があるリストなどの場合は、意外と便利です。ただ、共有で使用する場合は、自由にカスタマイズできていいのか判断して設定してください。
プロパティの[書式]タブでは、[列数]は[1]、[列幅][リスト幅][幅]は[3cm]にしています。
[値リストの編集の許可]を[はい]に設定してフォームビューに切り替えると、以下のように[リスト項目の編集]というのが表示されます。
[リスト項目の編集]をクリックすると、[リスト項目の編集]ダイアログボックスが表示されます。
上部に記されているとおり、1行に1項目ずつ入力します。
また、[既定値]の▼ボタンをクリックして、フォームビューを表示した時にコンボボックスに表示される値を指定できます。
以下のように[既定値]は[もも]を選択して、[OK]ボタンをクリックします。
保存すると、コンボボックスには[もも]が表示されます。
コンボボックスのリストを表示すると、[メロン]が追加されています。
コンボボックスのプロパティ[値集合ソース]と[既定値]も変更されています。
リストボックスのプロパティ設定
リストボックスはリストが常に表示されている状態なので、コンボボックスのようにプルダウンを表示するために▼ボタンをクリックする手間を省けます。
コンボボックスは、簡単にリストボックスに変更できます。
以下は、作成済みのコンボボックスです。[値集合ソース]は、テーブル[T_ 商品一覧]を指定しています。
[列幅]は、[0cm;2cm;3cm]にしています。
コンボボックスを選択して、右クリックのショートカットメニューから[コントロールの種類の変更]-[リストボックス]を選択します。
以下のように高さが自動的に広がります。
リストボックスは、コンボボックスより、広い領域を必要とします。
リストボックスのプロパティには、[リスト行数]と[リスト幅]はありません。
そのほかのプロパティの設定は同じです。
このままフォームビューに切り替えると、以下のようなリストボックスになります。
リストボックスの[高さ]の調整
リストボックスの[高さ]を調整する場合は、フォームを[レイアウトビュー]に切り替えると操作しやすくなります。
[フォームデザイン]タブの[表示]から[レイアウトビュー]を選択します。
枠にマウスを合わせて、マウスの形が上下矢印に変わったときにドラッグで調整します。プロパティに反映されます。
以下のように調整できます。幅も同様に調整できます。
参考[レイアウトビュー]は文字列に合わせて調整したい場合に役立ちます。リストボックスだけでなく、デザインビューで調整しにくい場合はレイアウトビューを使用されることをおすすめします。
-
レイアウトビューでフォームのコントロールをカスタマイズ
Accessのフォームには、デザインビュー、レイアウトビュー、フォームビューの3つの表示方法があります。 コントロールのサイズや位置などを調 ...
列見出しの表示
リストボックスのプロパティの設定もコンボボックスと同じです。
[列見出し]を[はい]にしてみます。
以下のように列見出し(フィールド名)が表示されるようになります。コンボボックスの場合も同じです。
プロパティの比較
コンボボックスとリストボックスのプロパティを比較すると、以下の3つの項目がリストボックスにはありません。
- リスト行数
- リスト幅
- 入力チェック
リストボックスは、リスト以外の値を入力することはできませんので、[入力チェック]の項目はありません。
コンボボックスとリストボックスの違い
[コンボボックス]と[リストボックス]の違いを簡単にまとめると、以下のようになります。
コンボボックス | リストボックス | |
リスト以外の値の入力 | できる | できない |
キーボードからの入力 | できる | できない |
設置領域 | 小さい | 大きい |
入力操作 | ドロップダウン形式 | 直接選択 |
コンボボックスは、リスト以外の値を入力できますが、リストボックスはリスト以外の値は入力できません。
コンボボックスでリスト以外の値を入力されないように、プロパティで設定することはできます。
-
コンボボックスにリスト以外の値が入力されないようにするには
テーブルやフォームでコンボボックスのリストから値を選択して入力するようにしていても、プロパティの[入力チェック]を[いいえ]に設定していると ...
コンボボックスにカーソルを置くと、自動的にリストを表示するように設定することもできます。
-
コンボボックス内にカーソルが移動すると自動でリストを表示するには
Accessの入力フォームでコンボボックスを使うことは多いと思います。 コンボボックスって、▼ボタンを押してリストを表示しますが、コンボボッ ...
リストボックスは、キーボードから入力することはできません。マウスで選択します。
コンボボックスは、ドロップダウン形式なので少ない領域に設置できますが、リストボックスはリストが多くなれば、その分の領域が必要になります。
リストボックスは一覧が表示されるので、コンボボックスより素早く入力できます。
参考コンボボックスとリストボックスの違いは、以下のルックアップウィザードの記事でも解説しています。
-
ルックアップウィザードでコンボボックスの設定(別のテーブルから値取得)
Accessのテーブルで、フィールドに入力する値をコンボボックスから選択する方法です。 コンボボックスとは、フィールドの値を入力する代わりに ...
Excelでもコンボボックスとリストボックスを作成することができます。
-
リストボックス(コンボボックス)の選択項目でセルの行に色を付ける
フォームコントロールのリストボックス、またはコンボボックスを設置して、リストで選択した項目を含むセルの行に塗りつぶしを設定します。 リストボ ...