Access VBAでリストボックスの複数選択した値を取得する方法

スポンサーリンク

Accessのリストボックスで複数の項目を選択し、選択した値をVBAで取得する方法を紹介します。
ItemsSelectedを使用すると、リストボックスで選択された複数の項目を取得できます。

今回は、選択した項目をカンマ区切りの文字列として取得し、テキストボックスに表示する方法を実際のサンプルを使って解説します。

スポンサーリンク

Access VBAでリストボックスの複数選択した値を取得する

下のような画面があるとします。

 

趣味 リストボックスリストをマスタから取得して表示します
その他テキストボックスリストのその他を選択したら使用可能となり入力することができるようになります
>>コマンドボタン選択したリストをカンマ区切りで右側のテキストボックスへ表示しています
選択テキストテキストボックス編集不可で表示のみにしています

 

Access VBAでリストボックスの複数選択した値を取得する

コマンドボタンで、選択したリストを選択テキストにVBAでコピーする方法を紹介します。

cmd趣味選択ボタンのクリックイベント処理

Private Sub cmd趣味選択_Click()
Dim sTemp As String
Dim varItm As Variant

    sTemp = ""
    
    For Each varItm In Me.lst趣味.ItemsSelected
        If sTemp = "" Then
            sTemp = Me.lst趣味.Column(1, varItm)
        Else
            sTemp = sTemp & "," & Me.lst趣味.Column(1, varItm)
        End If
    Next
    
    If Trim(Me.txt趣味その他.Value) <> "" Then
        If sTemp = "" Then
            sTemp = Trim(Me.txt趣味その他.Value)
        Else
            sTemp = sTemp & "," & Trim(Me.txt趣味その他.Value)
        End If
    End If
    
    Me.txt趣味.Value = sTemp
    
End Sub

 

VBAコード説明

lst趣味はリストボックスのコントローラー名です。

Me.lst趣味.ItemsSelectedは選択したリストを表します。

ItemsSelectedには、リストボックスで選択された項目のインデックスが格納されています。

ItemsSelectedとColumnの違い
Me.lst趣味.Column(1, varItm)はリストの名称の方を取得します。

テーブルにリストの値を保管すると、1,2,3,5,99 のようなカンマ区切りの文字列が格納されます。
しかし、それを文字として表示したい場合も帳票フォームなどであります。
その場合は、関数を作成してコードから名称に変換して例えば1,3,6,99ならば、

”映画鑑賞,読書,カラオケ,その他,AAAAAA”

と、いう文字列をテーブルに一緒に保管しておくことで

テーブル項目例
趣味コード:1,3,6,99
趣味名:”映画鑑賞,読書,カラオケ,その他,AAAAAA”

表示する際に趣味名を使用して表示することが可能です。

※複数の値をカンマ区切りで1つのフィールドに保存する方法は、
簡単なシステムでは利用できますが、検索・集計などを行う場合は別テーブルに分ける方法も検討してください。

 

値集合ソース

趣味のリストボックスは、値集合タイプをテーブル/クエリとします。

値集合ソースは

SELECT m_kbn_hobbies.hobbies_id, m_kbn_hobbies.hobbies_name FROM m_kbn_hobbies ORDER BY m_kbn_hobbies.hobbies_id; 

 

このようになります。

コメント

タイトルとURLをコピーしました