Allora se hai una Tabella che chiamiamo di APPOGGIO nella quale andrai ad Inserire i Records Selezionati, ti suggerisco ugualmente di usare una ListBox per attuare la Selezione in quanto consente, senza aggiungere campi FLAG nella Tabella Originale, di selezionare il richiesto.
Dalla Selezione della ListBox ricavi poi l'elenco degli ID di selezione ciclando la Collection ItemsSelected della ListBox e comporrai la Stringa che ti serve per fare un'INSERT nella tabella di Appoggio.
Tale tabella di Appoggio DEVE essere identica alla Originale per tutto TRANNE il campo PK, che NON deve essere di tipo Counter ma di Tipo Intero Lungo, ed andrà immagino svuotata prima di essere riempita nuovamente.
DbEngine(0)(0).Execute "DELETE * From Tbl2", dbFailOnError
Per riempire la Tbl2 partendo dalla selezione dei Records della Tbl1basterà eseguire una Query di accodamento tipo
INSERT INTO Tbl2 SELECT * FROM Tbl1 WHERE ID IN (1,4,7,9)
Tu devi quindi ricostruire la concatenazione degli ID tra le 2 Parentesi.
Dim varItem As Variant
Dim strParam As String
If Me!NomeListBox.ListIndex<0 Then
MsgBox "Nessuna selezione"
Exit Function
End if
For Each varItem In Me!NomeListBox.ItemsSelected
strParam = strParam & Me!NomeListBox.ItemData(varItem) & ","
Next
If Len(strParam)>0 Then strParam = Mid$(strParam,1, Len(strParam)-1) ' toglie l'ultima VIRGOLA
strParam ="INSERT INTO tbl2 SELECT * FROM tbl1 WHERE (" & strParam & ")"
DbEngine(0)(0).Execute "DELETE * From Tbl2", dbFailOnError
Non l'hoi provata ma il succo è quello descritto.