Share via


ListBox オブジェクト (Access)

ListBox オブジェクトはリスト ボックス コントロールに対応します。 リスト ボックス コントロールは、値または選択肢の一覧を表示します。

注釈

コントロール ツール
リスト ボックス コントロール リスト ボックス ツール

通常、値を覚えて入力するよりも、リストから選択する方が、すばやく簡単に値を入力できます。 リスト ボックスを使うと、入力した値が正しいかどうかを選択項目のリストで確認することもできます。

リスト ボックスはデータ行で構成されています。 行には 1 つ以上の列を含めることができます。これは、次の図に示すように、見出しの有無にかかわらず表示できます。

複数列リスト ボックス

複数の列から構成されるリスト ボックスが連結されている場合は、そのうちの 1 列の値が格納されます。

バインドされていないリスト ボックスを使用して、別のコントロールで使用できる値を格納します。 たとえば、非連結リスト ボックスを使って別のリスト ボックスまたはカスタム ダイアログ ボックスの値を制限することができます。 また、バインドされていないリスト ボックスを使用して、リスト ボックスで選択した値に基づいてレコードを検索することもできます。

フォームにリスト ボックスを表示するスペースがない場合や、リストから値を選択するだけでなく新しい値を入力できるようにする場合は、リスト ボックスではなくコンボ ボックスを使います。

この例は、テキスト ボックスでの入力中に、リスト ボックスの内容にフィルターを適用する方法を示します。

この例では、 ColorID という名前のリスト ボックスに、 Colors テーブルに格納されている色の一覧が表示されます。 [FilterBy] テキスト ボックスに入力すると、ColorID 内の項目が動的にフィルター処理されます。

これを行うには、テキスト ボックスの Change イベントを使用して、リスト ボックスの新しい RowSource として機能する SQL ステートメントを作成します。

Private Sub FilterBy_Change()

    Dim sql As String
    
    'This will match any entry in the list that begins with what the user 
    'has typed in the FilterBy control
    sql = "SELECT ColorID, ColorName FROM Colors WHERE ColorName Like '" & Me.FilterBy.Text & "*' ORDER BY ColorName"
    
    'If you want to match any part of the string then add wildcard (*) before
    'the FilterBy.Text, too:
    'sql = "SELECT ColorID, ColorName FROM Colors WHERE ColorName Like '*" & Me.FilterBy.Text & "*' ORDER BY ColorName"
    
    Me.ColorID.RowSource = sql
    
End Sub

イベント

メソッド

プロパティ

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。