目次
✅ 解決方法:Collectionを使う(Add可能)
Sub InsertWithCollection()
    Dim db As DAO.Database
    Dim sqlPrefix As String
    Dim sqlList As Collection
    Dim item As Variant
    Set db = CurrentDb()
    Set sqlList = New Collection
    sqlPrefix = "INSERT INTO ユーザー (ユーザー番号, ユーザーID, ユーザー名, パスワード, メール)"
    ' Addで要素を追加
    sqlList.Add " VALUES (1001, 'user1', 'name1', 'pas001', 'mail01@gmail.com')"
    sqlList.Add " VALUES (1002, 'user2', 'name2', 'pas002', 'mail02@gmail.com')"
    sqlList.Add " VALUES (1003, 'user3', 'name3', 'pas003', 'mail03@gmail.com')"
    ' 実行
    For Each item In sqlList
        db.Execute sqlPrefix & item, dbFailOnError
    Next
    MsgBox "CollectionからINSERT完了"
End Sub
✅ 代替:動的配列を使う(ReDim Preserve)
Dim sqlList() As String Dim i As Integer ReDim sqlList(0) sqlList(0) = "VALUES (1001, ...)" ' 追加するたびに配列サイズを拡張 ReDim Preserve sqlList(1) sqlList(1) = "VALUES (1002, ...)"
※ 可読性や実用性では Collection の方がおすすめです。
✅ まとめ
| 方法 | 特徴 | 
|---|---|
| Array() | 固定長。あとから .Addは不可 | 
| Collection | .Add/For Eachで柔軟運用 | 
| ArrayList | より高機能、参照設定が必要 | 
ご希望があれば:
- ArrayListを使ったバージョン
- ExcelやCSVから読み込んで Collectionに詰める処理
- フォーム入力 → 配列に追加 → SQL生成 のUI化
などもご案内できます。お気軽にどうぞ!
 
	
 
		 
			