Home > 即効テクニック > AccessVBA > フォーム・レポート > コンボボックスを使用する 1

即効テクニック

フォーム・レポート

コンボボックスを使用する 1

(Access 2000/2002/2003)
● 概要 ●
コンボボックスは、テキストボックスとリストボックスを組み合わせたようなコントロールです。
文字列の入力とリストからの選択を行うことができます。

コンボボックスのリスト部分は、RowSourceTypeプロパティ、RowSourceプロパティ、BoundColumnプロパティ、ColumnCountプロパティ、ColumnWidthsプロパティを使って、リストボックスと同じように設定します。
リスト部分で選択した項目は、テキストボックス部分に表示されます。
ただし、リストに複数列の表示をしていても、テキストボックスに表示されるのは、連結列に指定した項目のみです。
Columnプロパティを使えば、リスト内の任意の列のデータを取得することができます。Columnプロパティの引数には、最初の列を0として数えた列番号を指定します。

次のコードは、フォームを表示するときに、コンボボックスのリスト内容を指定するものです。


● サンプル1 ●
Private Sub Form_Load()
    'コンボボックスの設定
    With cbo所属
        .RowSourceType = "Table/Query"              '値集合タイプ
        .RowSource = "所属テーブル"                 '値集合ソース
        .BoundColumn = 1                            '連結列
        .ColumnCount = 2                            '列数
        .ColumnWidths = "1cm;2cm"                   '列幅
    End With
    'コンボボックスの2列目のデータを取得
    txt所属.ControlSource = "=cbo所属.Column(1)"


コンボボックスの値は、Valueプロパティで取得できます。Valueプロパティは、コンボボックスの既定のプロパティになっているので、明示的に指定しなくても値を取得することができます。

次のコードは、コンボボックスで選択した値を元に、リストボックスの値集合ソースを設定するものです。


● サンプル2 ●
Private Sub cbo所属_AfterUpdate()
    '所属コードがコンボボックスの値と等しい社員名を表示する
    lst社員.RowSource = "SELECT 社員テーブル.社員名 FROM 社員テーブル" & _
                        " WHERE 社員テーブル.所属コード = '" & cbo所属.Value
                        & "';"
End Sub