Diciamo che non hai usato il metodo più adatto...!
Le maschere offrono la possibilità di interagire con le azioni tra l'utente ed il Database.
Nel tuo caso devi distinguere non solo l'azione di chiudura della Maschera che può rendere INCOMPLETO l'inserimento del NUOVORECORD, ma anche lo spostamento ad un Nuovo o Precedente o primo Record... che ByPassa la tua logica.
Nel momento di Inserimento Record ci sono 2 EVENTI da gestire che offrono l'opzione di controllo sui dati ed un 3° evento che consente il controllo della chiusura.
IN realtà le opzioni sono maggiori ma le puoi vedere anche tu dal VISUALIZZATORE OGGETTI
Private Sub From_BeforeInsert(Cancel As Integer)
....
End Sub
Private Sub From_BeforeUpdate(Cancel As Integer)
....
End Sub
Private Sub From_Unload(Cancel As Integer)
....
End Sub
Tutti gli eventi che ti ho esposto come puoi notare espongono un PARAMETRO chiamato CANCEL.
Il forzamento del parametro ad un valore di TRUE forza di conseguenza l'annullamento dell'evento e delle conseguenze che questo avrebbe generato.
Quindi se in quegli eventi vai ad inserie la VALIDAZIONE dei campi che ritieni OBBLIGATORI
puoi, in caso di mancata validazione, forzare CANCEL=TRUE ed annullare l'azione conseguente...
compreso INSERIMENTO e CHIUSURA.
Fai qualche prova, apri la GUIDA IN LINEA e verifica la corretta sintassi ed i vari esempi proposti per avere una visione più completa.