Microsoft Access 掲示板

リストボックスから複数選択しそれをテーブルに格納したい

12 コメント
views

以前リストボックスで複数選択しそれをレポートで印刷することをご教示いただきました
リストボックスで複数選択しそれをテーブルに格納したい

Private Sub 請求書_Click()

Dim stFilter As String
    Dim varItm As Variant

    With Me.listSupplier
        For Each varItm In .ItemsSelected
            stFilter = stFilter & "," & .ItemData(varItm)
        Next
    End With

    If stFilter = "" Then
        MsgBox "本店を選択してください。"
    Else
'
        stFilter = "本部 In(" & Mid(stFilter, 2) & ")And 日付 =" & Me!依頼日
        DoCmd.OpenReport "L販社本部", acViewPreview, , stFilter
    End If

End Sub

tokinaito
作成: 2026/02/22 (日) 16:13:21
通報 ...
1

リストボックスで複数選択しそれをテーブルに格納したい

既存のテーブルに追加したいということなら印刷するコード部分(DoCmd.OpenReport)を追加クエリを実行するコードに書き換えればいいでしょう。

追加元と追加先のテーブルのフィールド構成が同じ場合のコード例

    CurrentDb.Execute "INSERT INTO 追加先テーブル" & _
        " SELECT * FROM 追加元テーブル Where " & stFilter, dbFailOnError
2
tokinaito 2026/02/24 (火) 18:19:02 9e4e6@a5d99

hatena様いつもありがとうございます。申し訳ございません。説明不足でした。リストボックスは非連結です。
追加元テーブルはございません。よろしくお願いします。

3
名前なし 2026/02/24 (火) 18:43:39 6234c@0e907

追加元テーブルはございません。よろしくお願いします。

 追加元テーブルがないなら全部やり直しましょう。正規化から始めないと砂上の楼閣です。

4

リストボックスで複数選択しそれをテーブルに格納したい

追加元テーブルはございません。よろしくお願いします。

複数選択したものをどのようにテーブルに格納しますか?

例えば、

  • カレントレコードの特定のフィールドににカンマ区切りで入力する
  • 新規レコードとして追加していく

というようにやりたいことを具体的かつ丁寧に説明してもらえませんか。

5
tokinaito 2026/02/25 (水) 08:02:56 9e4e6@a5d99

hatena様朝早くからありがとうございます。
やりたいのは新規入力です。いままでコンボボックスで1社づつ入力していたのを複数社を選択して一気に入力したいと思っています。

6

最初のコードでリストボックスで選択した値を取得している部分は下記のループですので

    With Me.listSupplier
        For Each varItm In .ItemsSelected
            stFilter = stFilter & "," & .ItemData(varItm)
        Next
    End With

このカンマ区切りで連結しているコードをレコード追加のコードに変更すればいいでしょう。

レコード追加はDAOかADOを使うのがいいでしょう。

ネット検索するかAIに質問すればサンプルコードが見つかると思いますのでそれを参考にコードを書いてみてください。

それでうまくいかないようならそのコードを提示して質問してください。

7

参考コード例

    Dim rs As Recordset          
    Set rs = CurrentDb.OpenRecordset("テーブル名")   

    Dim varItm As Variant
    With Me.listSupplier
        For Each varItm In .ItemsSelected
            rs.AddNew
            rs!フィールド名 = .ItemData(varItm)
            rs.Update
        Next
    End With

    rs.Close
8

やりたいのは新規入力です。いままでコンボボックスで1社づつ入力していたのを複数社を選択して一気に入力したいと思っています

リストボックスに会社のリストが表示されているということですよね。
これはどのように表示させていますか?
通常は会社マスタテーブルを値集合ソースにしますよね。
ならば、それが追加元テーブルになると思いますが?

9
tokinaito 2026/02/26 (木) 15:55:47 9e4e6@a5d99

そうですね、治すとボックスのデータとしては次のように作成しております。
SELECT [T販社本部].[本社ID], T販社本部.[本社名] FROM T販社本部 ORDER BY [本社ID];

10
tokinaito 2026/02/26 (木) 16:03:44 9e4e6@a5d99

修正です 治すと=リストです。

11

そうですね、治すとボックスのデータとしては次のように作成しております。
SELECT [T販社本部].[本社ID], T販社本部.[本社名] FROM T販社本部 ORDER BY [本社ID];

最初の回答の追加クエリを実行する方法でも後の回答の方法でも可能だと思います。

追加先のテーブルの構成が不明なのでこれ以上の具体的な回答は無理ですので、
回答をヒントにできるところまでご自身で作成してみてください。

行き詰ったところでまた質問してください。

12
tokinaito 2026/03/01 (日) 11:34:33 9e4e6@a5d99

hatena様素晴らしいです。ありがとうございました。