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”
趣味コード: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;
このようになります。
コメント