Access デスクトップ データベースのフォームにデータを入力すると、入力する値を記憶するよりも、リストから値を選択する方がすばやく簡単になります。 選択肢の一覧は、フィールドに入力された値が適切であることを確認するのにも役立ちます。 リスト コントロールは、既存のデータに結び付けることも、コントロール作成時に入力した固定値を表示することもできます。 Access フォームで使用できるリスト コントロールと、それらを作成およびカスタマイズする方法については、こちらをご覧ください。
目的に合ったトピックをクリックしてください
- リスト ボックス コントロールの種類について
- ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成する
- フォームにルックアップ フィールドを追加してリスト ボックスまたはコンボ ボックスを作成する
- ウィザードを使用しないでリスト ボックスまたはコンボ ボックスを作成する
- リスト ボックスまたはコンボ ボックスをカスタマイズする
リスト ボックス コントロールの種類について
Access には、フォームのリスト ボックスとコンボ ボックスの 2 つのリスト コントロールが用意されています。
リスト ボックス: リスト ボックス コントロールには、値または選択肢の一覧が表示されます。 リスト ボックスにはデータ行が含まれており、通常は複数の行が常に表示されるようにサイズが設定されます。 行には 1 つ以上の列を含めることができます。これは、見出しの有無に関係なく表示できます。 リストにコントロールが表示できる行数を超える行がある場合、コントロールにスクロール バーが表示されます。 ユーザーはリスト ボックスの選択肢に制限されており、リスト ボックスに値を入力することはできません。
コンボ ボックス: コンボ ボックス コントロールを使用すると、選択肢の一覧をよりコンパクトに表示できます。 ドロップダウン矢印を選択するまで、リストは非表示になります。 コンボ ボックスを使用すると、リストにない値を入力することもできます。 このように、コンボ ボックス コントロールは、テキスト ボックスとリスト ボックスの機能を組み合わせています。
- 矢印を選択してドロップダウン リストを表示します。
- ドロップダウン リストでオプションを選択します。
リスト ボックスとコンボ ボックスは、連結コントロールにすることも非連結コントロールにすることもできます。 これらのコントロールでは、自分で入力した固定リストの値や、テーブルまたはクエリの値を検索できます。 テーブルまたはクエリの値を検索するバインドされたリスト ボックスまたはコンボ ボックスを作成するには、フォームが外部キー フィールドまたはルックアップ フィールドを含むレコード ソースに基づいていることを確認します。 これにより、リスト ボックスまたはコンボ ボックス内のデータをフォーム上のデータにリンクするために必要なリレーションシップを作成できます。
ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成する
ナビゲーション ウィンドウでフォームを右クリックし、[デザイン ビュー] を選択します。
注
この手順は、フォームをテーブルまたはクエリに連結する場合の手順です。 フォームがバインドされていない場合、一部の手順は適用されません。 フォームがテーブルまたはクエリにバインドされているかどうかを判断するには、 F4 キーを押してプロパティ シートを表示します。 プロパティ シートの [データ] タブにある "レコード ソース" プロパティ ボックスに、フォームが連結されているテーブルまたはクエリが表示されます。
[ フォーム デザイン ] タブの [ コントロール ] グループで、[ コントロール ウィザードの使用 ] が選択されていることを確認します。
リスト ボックス ツールまたはコンボ ボックス ツールを選択します。
フォームで、リスト ボックスまたはコンボ ボックスを配置する場所を選択します。
- 選択内容に応じて、 リスト ボックス ウィザード または コンボ ボックス ウィザード が起動します。
コントロールに表示する値を取得する方法の確認を求められたら、次のいずれかの操作を行います。
- レコード ソースの現在のデータを表示する場合 は、[リスト ボックス/コンボ ボックス] を選択して、テーブルまたはクエリの値を検索します。
- ほとんど変化しない値の固定リストを表示する場合 は、[必要な値を入力します] を選択します。
- コントロールがデータ入力ツールとして機能するのではなく、検索操作を実行する場合は、[ リスト ボックス/コンボ ボックスで選択した値に基づいてフォーム上のレコードを検索する] を選択します。 これにより、ユーザーが入力した値に基づいて検索操作を実行する、埋め込みマクロを使用してバインドされていないコントロールが作成されます。
指示に従って、値の表示方法を指定します。
ウィザードの最初のページで最初の 2 つのオプションのどちらかを選んだ場合は、値を選んだときの Access の動作を指定するよう求められます。 次のいずれかの操作を行います。
- バインドされていないコントロールを作成するには、[ 後で使用するために値を記憶する] を選択します。 つまり、ユーザーがフォームを変更または閉じるまで、Access は選択した値を保持しますが、値はテーブルに書き込まれません。
- バインドされたコントロールを作成するには、[ このフィールドにその値を格納する] を選択し、コントロールをバインドするフィールドを選択します。
[ 次へ] を選択し、コントロールのラベルを入力します。 このラベルはコントロールの横に表示されます。
[完了] をクリックします。
フォームにルックアップ フィールドを追加してリスト ボックスまたはコンボ ボックスを作成する
フォームにルックアップ フィールドを追加して連結リスト ボックスまたは連結コンボ ボックスを作成することができます。
テーブルにルックアップ フィールドを作成します。 作成するルックアップ フィールドには、複数値を指定することも、1 つの値を含めることができます。 複数値ルックアップ フィールドの作成の詳細については、「複数値フィールド を作成または削除する」を参照してください。
次のいずれかの操作を行います。
ルックアップ フィールドを含むレコード ソースに基づく新しいフォームを作成します。 たとえば、 ナビゲーション ウィンドウで、ルックアップ フィールドを含むテーブルまたはクエリを選択し、[ 作成 ] タブの [フォーム] グループで [ フォーム ] を選択 します。 ルックアップ フィールドのコンボ ボックスが自動的に作成されます。
次のようにしてフォームにリスト ボックスまたはコンボ ボックスを追加します。
ルックアップ フィールドを含むレコード ソースに基づくフォームをデザイン ビューで開きます。
[フィールド一覧] ウィンドウが表示されない場合は、Alt キーを押しながら F8 キーを押して表示します。
ルックアップ フィールドをダブルクリックするか、ルックアップ フィールドを [フィールド リスト] ウィンドウからフォームにドラッグします。 フィールドに連結されたコンボ ボックスが自動的に作成されます。
ヒント
コンボ ボックスをリスト ボックスに変更する場合、またはその逆の方法でコントロールを右クリックし、ショートカット メニューの [変更 先] を選択し、目的のコントロールの種類を選択します。
ウィザードを使用しないでリスト ボックスまたはコンボ ボックスを作成する
ウィザードを使用せずにリスト ボックスまたはコンボ ボックスを作成する場合は、コントロールのプロパティの多くを自分で設定します。 特定のプロパティの詳細を確認するには、適切なプロパティ ボックスを選択し、 F1 キーを押します。
フォームをデザイン ビューで開きます。
[ フォーム デザイン ] タブの [ コントロール ] グループで、[ コントロール ウィザードの使用 ] が選択されていないことを確認します。
リスト ボックス ツールまたはコンボ ボックス ツールを選択します。
フォーム内で 1 回選択して既定のサイズのコントロールを作成するか、コントロールが目的のサイズになるまで選択してドラッグします。
コントロールがまだ選択されている状態で、 F4 キーを押してプロパティ シートを開きます。
次の表をガイダンスとして使用して、 行ソースの種類 と 行ソース のプロパティを設定します。
目的 [行ソースの種類] プロパティを に設定します。 行ソース プロパティを次のように設定します。 テーブルまたはクエリの値、または SQLステートメントの結果を表示するテーブル/クエリ ドロップダウン リストで、リスト ボックスまたはコンボ ボックスに表示する値を含むテーブルまたはクエリを選択します。 または、 SQLステートメントを入力します。 または、プロパティ シートの [ データ ] タブで、[ ビルド ] ボタンを選択してクエリ ビルダーを開きます。 クエリの作成の詳細については、「 単純な選択クエリを作成する」を参照してください。固定値リストを表示する 値リスト 固定値のリストをセミコロン ( ;) で区切って入力します。 たとえば、「North;South;East;West」のように入力します。 または、プロパティ シートの [ データ ] タブで、[ ビルド ] ボタンを選択して [ リスト アイテムの編集 ] ダイアログ ボックスを開き、項目を個別の行に入力します。テーブルまたはクエリからフィールドの一覧を表示する フィールド リスト ドロップダウン リストで、リスト ボックスまたはコンボ ボックスに表示するフィールド名を含むテーブルまたはクエリを選択します。 コントロールに複数の列を表示する場合は、[ 列数 ] プロパティ ボックスを選択し、目的の列の数を入力します。 "列幅" プロパティを設定して列の幅を調整します。 各プロパティの詳細については、プロパティ ボックスにカーソルを置き、 F1 キーを押します。
選択した値を Access に格納する場合は、[ コントロール ソース ] プロパティ ボックスを選択し、リスト ボックスまたはコンボ ボックスをバインドするフィールドを選択します。
リスト ボックスまたはコンボ ボックスをカスタマイズする
フォームをデザイン ビューで開いた状態で、リスト ボックスまたはコンボ ボックスが選択されていることを確認し、 F4 キーを押してコントロールのプロパティ シートを開きます。 その後、次のいずれかの操作を行います。
リスト ボックスまたはコンボ ボックスの並べ替え順序を変更します 。ウィザードを使用してリスト ボックスまたはコンボ ボックスを作成した場合、最初に表示される列でリストを構成する行が自動的に並べ替えられます。 別の並べ替え順序を指定する場合、またはコントロールの "値集合ソース" プロパティを保存済みクエリに設定した場合は、次の手順を実行します。
- [ データ ] タブを選択し、[ 行ソース ] プロパティ ボックスを選択します。
- プロパティ シートの [ データ ] タブで、[ ビルド ] ボタンを選択してクエリ ビルダーを開きます。
- 並べ替える列の [並べ替え] 行で、目的の並べ替え順序を指定します。
リスト ボックスまたはコンボ ボックスから列をバインドする: リスト ボックスまたはコンボ ボックスの [ 連結列 ] プロパティ ボックスで、リスト ボックスまたはコンボ ボックス内の列の配置に対応する数値を指定します。 たとえば、「
1」と入力して、リスト ボックスまたはコンボ ボックスの最初の列を 、コントロール ソース プロパティで指定された基になるフィールドにバインドします。 列を数えるときは非表示の列を含めます。 Bound Column プロパティを0に設定すると、いずれかの列の値ではなくリスト インデックスが保存されます。 これは、リスト値ではなく連続する数字を格納する場合に便利です。フォームのリスト ボックスまたはコンボ ボックスで列を非表示にする:
[ 列の幅 ] プロパティ ボックスに、非表示にする列の
0を入力します。 たとえば、0.5 インチ幅の SupplierID 列と 2 インチ幅の SupplierName 列を持つバインドされた 2 列のコンボ ボックスがあるとします。 SupplierID 列はリストの最初の列であるため、 Column Widths プロパティは0.5";2"に設定されます。 SupplierID 列を非表示にするには、[ 列の幅] プロパティを [0";2"] に設定します。 SupplierID 列は、非表示の場合でもバインドされた列にすることができます。注
コンボ ボックスでは、リストが表示されていない場合、非表示でない最初の列がコンボ ボックスのテキスト ボックス部分に表示されます。 たとえば、前に示した例では SupplierID 列が非表示であるため SupplierName 列が表示されます。 SupplierID 列が非表示になっていない場合は、SupplierName 列の代わりに表示されます。
フォームのコンボ ボックスに列見出しを追加します。
- [ 列見出し ] プロパティ ボックスで、[ はい ] を選択して列見出しを表示します。 コンボ ボックスの見出しはリストが開かれたときにだけ表示されます。 コンボ ボックスまたはリスト ボックスがレコード ソースに基づいている場合、Access はレコード ソースのフィールド名を列見出しとして使用します。 コンボ ボックスまたはリスト ボックスが固定値リストに基づいている場合、Access では、値リスト (Row Source プロパティ) のデータの最初の n 個の項目を列見出しとして使用します。ここで、n は Column Count プロパティで設定された数値です。
フォームのコンボ ボックスに対する入力入力機能をオフにします。
- [ 自動展開 ] プロパティ ボックスで、[ いいえ] を選択します。 [自動拡張] プロパティを [いいえ] に設定すると、リストから値を選ぶか、値全体を入力する必要があります。
フォームのコンボ ボックスのリスト ボックス部分の幅を設定します。
- [リスト幅] プロパティ ボックスに、Windows コントロール パネルで設定されている現在の測定単位を使用して、目的の幅を入力します。 既定以外の単位を使用するには、単位の指示子を含めます。 たとえば、「
2 cm」と入力します。 スクロール バー用の十分な領域を確保してください。 コンボ ボックスのリスト ボックス部分は、テキスト ボックス部分よりも広くできますが、狭くすることはできません。 既定の設定 ([自動]) では、コンボ ボックスのリスト ボックスはテキスト ボックス部分と同じ幅になります。
- [リスト幅] プロパティ ボックスに、Windows コントロール パネルで設定されている現在の測定単位を使用して、目的の幅を入力します。 既定以外の単位を使用するには、単位の指示子を含めます。 たとえば、「
フォームのコンボ ボックスに表示する行の最大数を設定します。
- [リスト行数] プロパティ ボックスに数値を入力します。 実際の行数が "リスト行数" プロパティで指定した数字を超えると、コンボ ボックスにスクロール バーが表示されます。
コンボ ボックスのエントリをフォームのコンボ ボックスのリスト部分の項目に制限します。
[ リストに制限 ] プロパティ ボックスで、[ はい] を選択します。
注
- コンボ ボックスに表示される最初の列がバインドされた列ではない場合、[リストに制限] プロパティが [いいえ] に設定されている場合でも、Access によってエントリがリストに制限されます。
- "入力チェック" プロパティが [いいえ] に設定されている場合、リストに存在しない入力項目を入力しようとすると、コンボ ボックスが連結されていれば、入力項目は基になるフィールドに格納されますが、リストには追加されません。 新しい入力項目をリストに追加するには、"リスト外入力時" プロパティと、リストにない値が入力されたときに実行するイベントを使用します。