Möglichkeit 1:
Mit Timer-Funktion (im Formular die Eigenschaft ‚Bei Zeitgeber‘) die Eigenschaft dirty abfragen.
Folgender Quellcode sollte Dir weiterhelfen:
'Im Globalen Deklarationsbereich des Formular-Moduls
Dim AnzahlTimerAufrufe As Integer
'Folgende Funktion schließt nach 10 Sekunden, wenn die Eigenschaft Timer-Intervall (bei den Formulareigenschaften ‚Zeitgeberintervall‘ auf 1000 steht)
Private Sub Form_Timer()
AnzahlTimerAufrufe = AnzahlTimerAufrufe + 1
If Me.Dirty = True And AnzahlTimerAufrufe >= 10 Then DoCmd.Close acForm, Me.Name
End Sub
Möglichkeit 2:
Warum speicherst Du denn nicht einfach den Datensatz nach einer gewissen Zeit (vielleicht auf Nachfrage, damit der User auch noch Zeit hat Änderungen nicht zu übergeben).
Möglichkeit 3:
Alternativ könntest Du ja ein ungebundenes Formular verwenden (Formular ohne Datensatzherkunft / Recordsource). Dort die zu bearbeitenden Daten eintragen (beim Öffnen oder Datensatzwechsel) und dann einfach nach einer gewissen Zeit die Daten wieder an die Tabelle übertragen.
Grüße
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]