Ho fatto qualche prova, e qualche ricerca, e ti confermo che il problema è ricorrente, la chiusura all'interno di un evento genera questo errore, francamente non riesco a comprenderne bene il legame ma credo sia legato agli eventi di Form considerati transazionali, e potrebbe avere un senso.
Detto questo la soluzione che ho trovato è una sorta di WorkAround, ovvero si lascia chiudere la transazione e si delega la chiusura al Timer.
Option Compare Database
Option Explicit
Private blExit As Boolean
Private Sub Form_Timer()
If blExit Then DoCmd.Close acForm, Me.Name
End Sub
Private Sub Nome_Exit(Cancel As Integer)
On Error Resume Next
Dim answer As VBA.VbMsgBoxResult
If Len(Me.Nome & vbNullString) = 0 And Not blExit Then
answer = MsgBox("La textbox è vuota. Vuoi continuare?", vbQuestion + vbYesNo, "Messaggio di avviso")
Cancel = True
blExit = (answer = vbNo)
If blExit Then Me.TimerInterval = 50
End If
End Sub