フォームにデータを入力する場合、値を記憶して入力するよりも、リストから値を選択する方が簡単で速いことがあります。リストから選択すると、フィールドに入力される値が適切であることも保証されます。リスト コントロールは既存のデータに接続するか、またはコントロールの作成時に入力された固定値を表示することができます。この記事では、Microsoft Office Access 2007 で利用可能なリスト コントロールについて説明し、リスト コントロールの作成方法とカスタマイズ方法を示します。
目的に合ったトピックをクリックしてください
リスト コントロールの種類について
Office Access 2007 にはリスト ボックスとコンボ ボックスという 2 種類のリスト コントロールがあります。
リスト ボックス リスト ボックス コントロールには値または選択肢のリストが表示されます。リスト ボックスにはデータの行が含まれており、通常はそのうちの何行かが常時表示されるサイズに設定されます。行は 1 つ以上の列を持つことが可能で、列には見出しがある場合とない場合があります。リストに含まれる行の数がコントロールに表示できる行数よりも多い場合は、コントロールにスクロール バーが表示されます。ユーザーが選択できるのは、リスト ボックス内の値に限られます。値をリスト ボックスに入力することはできません。
コンボ ボックス コンボ ボックス コントロールでは、ドロップダウン ボックスの矢印がクリックされるまでリストは表示されないので、リストの選択肢がよりコンパクトに表示されます。コンボ ボックスでは、リストにない値を入力することも可能です。この意味では、コンボ ボックスはテキスト ボックスとリスト ボックスの機能を組み合わせたものだと言えます。

ドロップダウン リストを表示するには矢印をクリックします。

ドロップダウン リストの選択肢をクリックします。
リスト ボックスとコンボ ボックスは、連結コントロール (連結コントロール: フォーム、レポート、またはデータ アクセス ページで使用するコントロール。テーブル、クエリ、または SQL ステートメントからのデータを表示または変更するために使用します。このコントロールの ControlSource プロパティには、コントロールが連結されているフィールドの名前が表示されます。)または非連結コントロール (非連結コントロール: 基になるテーブル、クエリ、または SQL ステートメントのフィールドに連結していないコントロール。通常、非連結コントロールは、情報表示テキストやピクチャの表示に使用します。)にすることができます。これらのコントロールは、入力済みの固定値を参照するか、テーブルまたはクエリの値を参照します。テーブルまたはクエリの値を参照する連結リスト ボックスまたは連結コンボ ボックスを作成するには、フォームが外部キー (外部キー: 主キー フィールドまたは別のテーブルのフィールドを参照する、テーブルのフィールド (列)。外部キーは、テーブル間の関連を示します。) フィールド、またはルックアップ フィールド (ルックアップ フィールド: Access データベースのフォームまたはレポートで使用するフィールド。テーブルまたはクエリから取得した値を表示したり、値のセットを格納したりします。)を含んだレコード ソース (レコード ソース: Access データベースでは、フォーム、レポート、またはデータ アクセス ページの基になるデータを提供するテーブル、クエリ、または SQL ステートメント。Access プロジェクトでは、フォーム、レポート、またはデータ アクセス ページの基になるデータを提供するテーブル、ビュー、SQL ステートメント、またはストアド プロシージャです。)に基づいている必要があります。これにより、リスト ボックスまたはコンボ ボックスのデータをフォーム上のデータにリンクするために必要な関係を作成できます。
ページの先頭へ
ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成する
- ナビゲーション ウィンドウでフォームを右クリックし、[デザイン ビュー] をクリックします。
メモ この手順では、フォームがテーブルまたはクエリに連結されていると想定しています。非連結フォームの場合、一部の手順は適用されません。フォームがテーブルまたはクエリに連結されているかどうかを確認するには、F4 キーを押してプロパティ シートを表示します。プロパティ シートの [データ] タブの "Record Source/レコードソース" プロパティに、フォームの連結先のテーブルまたはクエリが表示されます。
- [デザイン] タブの [コントロール] で
(コントロール ウィザードの使用) が選択されていることを確認します。
(リスト ボックス) ツールまたは
(コンボ ボックス) ツールをクリックします。
- フォームで、リスト ボックスまたはコンボ ボックスを配置する位置をクリックします。
選択に応じて、リスト ボックス ウィザードまたはコンボ ボックス ウィザードが開始します。
- コントロールの値の取得方法を確認するメッセージが表示されたら、次のいずれかの操作を行います。
- レコード ソースの現在のデータを表示する場合は、[テーブルまたはクエリの値をリストボックス/コンボボックスに表示する] をクリックします。
- めったに変更されない固定値のリストを表示する場合は、[表示する値をここで指定する] をクリックします。
- コントロールをデータ入力ツールとしてよりも検索操作の実行に使用する場合は、[リストボックス/コンボボックスで選択した値に対応するレコードをフォームで検索する] をクリックします。これにより、ユーザーが入力した値に基づいて検索操作を実行する埋め込みマクロを含む非連結コントロールが作成されます。
- 指示に従って、値を表示する方法を指定してください。
- ウィザードの最初のページで最初の 2 つのオプションのどちらかを選択した場合、値を選択したときに Access が実行する動作を指定する必要があります。次のいずれかの操作を行います。
- [次へ] をクリックし、コントロールのラベルを入力します。このラベルはコントロールの横に表示されます。
- [完了] をクリックします。
ページの先頭へ
フォームにルックアップ フィールドを追加してリスト ボックスまたはコンボ ボックスを作成する
フォームにルックアップ フィールドを追加すると、これに連結するリスト ボックスまたはコンボ ボックスを作成できます。
- テーブルにルックアップ フィールドを作成します。作成するルックアップ フィールドは、複数の値を持つ場合と単一の値を持つ場合があります。
ルックアップ フィールド作成の詳細については、「複数の値を格納するルックアップ フィールドを追加または変更する」を参照してください。
- 次のいずれかの操作を行います。
- ルックアップ フィールドが含まれているレコード ソースを基にして、新しいフォームを作成します。たとえば、ナビゲーション ウィンドウで、ルックアップ フィールドが含まれているテーブルまたはクエリを選択し、[作成] タブの [フォーム] で
(フォーム) をクリックします。
ルックアップ フィールド用のコンボ ボックスが自動的に作成されます。
- フォームにリスト ボックスまたはコンボ ボックスを追加します。
- デザイン ビューで、ルックアップ フィールドが含まれる、レコード ソースに基づいているフォームを開きます。
- [フィールド リスト] ウィンドウが表示されていない場合は、Alt キーを押しながら F8 キーを押して表示します。
- ルックアップ フィールドをダブルクリックするか、ルックアップ フィールドを [フィールド リスト] ウィンドウからフォームへドラッグします。ルックアップ フィールドに連結したコンボ ボックスが自動的に作成されます。
ヒント コンボ ボックスをリスト ボックスに (またはその逆に) 変更するには、コントロールを右クリックし、ショートカット メニューの [コントロールの種類の変更] をクリックします。次に変更するコントロールの種類をクリックします。
ページの先頭へ
ウィザードを使用せずにリスト ボックスまたはコンボ ボックスを作成する
ウィザードを使用せずにリスト ボックスまたはコンボ ボックスを作成するには、コントロールのプロパティの多くを自分で設定する必要があります。特定のプロパティに関する詳細が必要な場合は、該当するプロパティ ボックスをクリックして、F1 キーを押します。
- デザイン ビューでフォームを開きます。
- [デザイン] タブの [コントロール] で [コントロール ウィザードの使用] が選択されていないことを確認します。
(リスト ボックス) ツールまたは
(コンボ ボックス) ツールをクリックします。
- フォーム内で 1 回クリックして既定のサイズのコントロールを作成するか、またはコントロールをクリックして必要なサイズになるまでドラッグします。
- コントロールが選択されている状態で、F4 キーを押してプロパティ シートを開きます。
- 次の表の指示に従って "RowSourceType/値集合タイプ" プロパティと "RowSource/値集合ソース" プロパティを設定します。
| 目的 |
"RowSourceType/値集合タイプ" プロパティの設定 |
"RowSource/値集合ソース" プロパティの設定 |
| テーブルまたはクエリの値、または SQL ステートメントの結果を表示する |
[テーブル/クエリ] |
リスト ボックスまたはコンボ ボックスに表示する値を含むテーブルまたはクエリをドロップダウン リストで選択します。
または
SQL ステートメントを入力します。
または
プロパティ シートの [データ] タブで、 をクリックして、クエリ ビルダを開きます。クエリの作成の詳細については、「簡単な選択クエリを作成する」を参照してください。
|
| 固定値のリストを表示する |
[値リスト] |
固定値のリストをセミコロン (;) で区切って、たとえば「北;南;東;西」のように入力します。
または
プロパティ シートの [データ] タブで、 をクリックして [リスト項目の編集] ダイアログ ボックスを開き、項目を行に分けて入力します。
|
| テーブルまたはクエリのフィールド リストを表示する |
[フィールド リスト] |
リスト ボックスまたはコンボ ボックスに表示するフィールド名を含むテーブルまたはクエリをドロップダウン リストから選択します。 |
- コントロールに複数の列を表示する場合は、[列数] ボックスをクリックし、表示する列の数を入力します。"Column Widths/列幅" プロパティを設定して、列の幅を調整します。各プロパティの詳細を確認するには、プロパティ ボックス内にカーソルを置いて F1 キーを押します。
- 選択した値を Access で保存する場合は、[コントロールソース] ボックスをクリックし、リスト ボックスまたはコンボ ボックスに連結するフィールドを選択します。
ページの先頭へ
フォーム ビューでフォームを開いているときに値リストを編集する
リスト ボックスまたはコンボ ボックスの "RowSourceType/値集合タイプ" プロパティが [値リスト] に設定されている場合、フォーム ビューでフォームを開いているときにリストの値を編集できるため、リストを変更する必要があるたびにデザイン ビューまたはレイアウト ビューに切り替えてプロパティ シートを開き、コントロールの "RowSource/値集合ソース" プロパティを編集する必要がなくなります。
メモ リストの値を編集するには、リスト ボックスまたはコンボ ボックスの "Allow Value List Edits/値リストの編集の許可" プロパティを [はい] に設定します。
フォーム ビューで値リストを編集する
クリックするか、Tab キーを押して移動することによって、リスト ボックスまたはコンボ ボックスにカーソルがある場合、リストの下にボタンが表示されます。
- このボタンをクリックして、[リスト項目の編集] ダイアログ ボックスを開きます。
- 各項目を個別の行に配置したままリスト項目を編集します。
- 新しいレコードのための既定値を選択するには、[既定値] ボックスのドロップダウン矢印をクリックして、設定する値をクリックします。
- [OK] をクリックします。
フォーム ビューでの値リストの編集を無効にする
- ナビゲーション ウィンドウでフォームを右クリックし、[デザイン ビュー] または [レイアウト ビュー] をクリックします。
- 設定を行うコントロールをクリックし、F4 キーを押してプロパティ シートを表示します。
- プロパティ シートの [データ] タブで、"AllowValueListEdits/値リストの編集の許可" プロパティを [いいえ] に設定します。
(Microsoft Office ボタン) をクリックし、[上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
値リストの編集に別のフォームを指定する
Office Access 2007 の既定では、値リストを編集するための組み込みフォームが用意されています。別のフォームをこの目的に使用する場合は、そのフォームの名前を [リスト項目編集フォーム] ボックスに次のように入力します。
- ナビゲーション ウィンドウでフォームを右クリックし、ショートカット メニューの [デザイン ビュー] または [レイアウト ビュー] をクリックします。
- 設定を行うコントロールをクリックし、F4 キーを押してプロパティ シートを表示します。
- プロパティ シートの [データ] タブで、[リスト項目編集フォーム] ボックスのドロップダウン矢印をクリックします。
- 値リストの編集に使用するフォームをクリックします。
(Microsoft Office ボタン) をクリックし、[上書き保存] をクリックするか、Ctrl キーを押しながら S キーを押します。
ページの先頭へ
リスト ボックスまたはコンボ ボックスをカスタマイズする
フォームをデザイン ビューで開き、カスタマイズするリスト ボックスまたはコンボ ボックスが選択されていることを確認します。次に F4 キーを押してコントロールのプロパティ シートを開きます。次のいずれかの操作を行います。
- リスト ボックスまたはコンボ ボックスの並べ替え順序を変更する ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成した場合は、リストに表示される最初の列によって行が自動的に並べ替えられます。これとは異なる並べ替え順序を指定するか、またはコントロールの "RowSource/値集合ソース" プロパティに保存されたクエリを設定している場合は、次の手順を行います。
- [データ] タブをクリックし、[値集合ソース] ボックスをクリックします。
- プロパティ シートの [データ] タブで、
をクリックして、クエリ ビルダを開きます。
- 並べ替える列の [並べ替え] 行で、並べ替えの順序を指定します。
- リスト ボックスまたはコンボ ボックスの列と連結する
リスト ボックスまたはコンボ ボックスの [連結列] ボックスに、リスト ボックスまたはコンボ ボックスの列の位置に対応する数値を指定します。たとえば、"ControlSource/コントロール ソース" プロパティで指定した基になるフィールドに、リスト ボックスまたはコンボ ボックスの最初の列を連結するには「1」と入力します。非表示の列も列数に含めて数えます。
"Bound Column/連結列" プロパティを「0」に設定すると、列の値の代わりに、リスト インデックスが保存されます。これは、一覧の値の代わりに連続番号を保存する場合に便利です。
- フォームのリスト ボックスまたはコンボ ボックスの列を非表示にする
- [列幅] ボックスで、非表示にする列に「0」と入力します。
たとえば、[仕入先コード] 列の幅が 1.5 cm で、[仕入先名] 列の幅が 5 cm である 2 列の連結コンボ ボックスがあるとします。[仕入先コード] 列がリストの最初の列であるため、"ColumnWidths/列幅" プロパティは「1.5cm;5cm」に設定されます。[仕入先コード] 列を非表示にするには、"ColumnWidths/列幅" プロパティを「0cm;5cm」に設定します。非表示ではあっても、[仕入先コード] 列は連結列です。
コンボ ボックスまたはリスト ボックスがレコード ソースを基にしている場合は、レコード ソースのフィールド名が列見出しとして使用されます。コンボ ボックスまたはリスト ボックスが固定値リストを基にしている場合は、"Row Source/値集合ソース" プロパティで指定した値リストのデータの最初の n 個のアイテムが列見出しとして使用され、この n は "Column Count/列数" プロパティに設定された数値を表します。
- フォームのコンボ ボックスに入力した文字と一致する値を一覧で自動的に表示する機能をオフにする
- [自動拡張] ボックスの [いいえ] をクリックします。
"AutoExpand/自動拡張" プロパティに [いいえ] を設定した場合は、一覧から値を選択するか、または値全体を入力する必要があります。
- フォームのコンボ ボックスのリスト ボックス部分の幅を設定する
- [リスト幅] ボックスに、Windows のコントロール パネルで設定した単位で、リスト ボックスの幅を設定します。既定以外の単位を使用する場合は、単位を含めて入力します。たとえば、「2 cm」と入力します。この値は、スクロール バーを表示するためのスペースを計算に入れて指定してください。
コンボ ボックスのリスト ボックス部分の幅は、テキスト ボックス部分の幅よりも広くすることはできますが、狭くすることはできません。既定の設定 ([自動]) を使用すると、リスト ボックス部分の幅は、コンボ ボックスのテキスト ボックス部分の幅と同じになります。
- フォームのコンボ ボックスに表示する行の最大数を設定する
"ListRows/リスト行数" プロパティに設定した値よりも、コンボ ボックスの実際の行数が多い場合は、コンボ ボックスに垂直スクロール バーが表示されます。
- フォーム上のコンボ ボックスの入力を一覧の項目に制限する
- [入力チェック] ボックスの [はい] をクリックします。
メモ
- コンボ ボックスに表示される最初の列が連結列でない場合、"Limit To List/入力チェック" プロパティが [いいえ] に設定されていても、一覧への入力が制限されます。
- "LimitToList/入力チェック" プロパティが [いいえ] に設定されていてコンボ ボックスが連結されている場合、リストにない項目を入力すると、入力した項目は基になるフィールドに保存されますが、リストには追加されません。新しい項目をリストに追加するには、"OnNotInList/リスト外入力時" プロパティと NotInList イベントを使用します。
ページの先頭へ