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,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;
このようになります。



コメント