Pues es que no entiendo eso de que el usuario tiene que cerrar el formulario cada vez que ingrese un dato... Para mí que eso lo tienes mal panteado... Y si se equivocó al introducir el dato previo, ¿qué hace? ¿cómo da marcha atrás?
Yo te lo planteaba suponiendo que abrías un formulario con todos los textboxes necesarios...
Respecto a que te anula el registro en todos los casos, es lógico... Para evitarlo haz algo como esto
Código:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim nResp as Long
nResp = MsgBox("¿Desea grabar los datos?", vbYesNo)
If nResp <> vbYes then
Data1.Recordset.MoveLast
Data1.Recordset.Delete
End If
End Sub