Concettualmente per inserire Records lato M, quindi nella SubForm, devi avere un Record lato 1, nella Form.
Quindi se lavori con Maschere DataBound, Connesse all'origine dati, quando inizi a provare ad inserire un dato nella SubForm, la Form ha fatto il commit quindi il SAVE per chiudere la Transazione, viene assegnata la PK se counter, e collegata come campi Master/Secondari alla SubForm e valorizzato il campo FK.
Nella gestione DataBound quindi il processo di Modifica(sia AddNew che Edit) è transazionale, lo chiariscono gli Eventi BeforeInser/BeforeUpdate che esponendo il parametro Cancel, va ad indicare alla tranzazione aperta se fare il Commit o il RollBack.
Quindi con Access non è fattibile in quanto non è predisposto per aprire 2 transazioni annidate(Form-SubForm), ma chiude una prima di aprire l'altra.
Puoi invece fare un Rollback del record lato M, ma anche quì uno alla volta, se inserisci 100Records quando passi al NewRec, hai Salvato e fatto il Commit del precedente.
Per fare quello che chiedi la gestione dei dati va modificata, e diventa più complessa in quanto invece di usare Access si usa JET direttamente sfruttando ADO o DAO, ovvero si lavora con i Recordset sia lato Form che SubForm e si apre una Transazione che annida i 2 ambienti… trovi un esempio quì, semplice ma concettualmente chiarissimo:
http://www.databasedevelopment.co.uk/examples/FormTransaction.zip