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

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

 

【コード説明】

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

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

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

テーブルにリストの値を保管すると、1,2,3,5,99 のようなカンマ区切りの文字列が格納されます。

しかしそれを文字として表示したい場合もあると思います(帳票フォームなどで)

その場合、関数を作成してコードから名称に変換して例えば1,3,6,99ならば、

”映画鑑賞,読書,カラオケ,その他,AAAAAA”という文字列をテーブルに一緒に保管しておけば、

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

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

 

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

値集合ソースは


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

 

このようになります。

コメント

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