Hacer lo que quieres "al momento" podría crearte registros que te mostraran los valores de los campos como #Eliminado. El problema de refrescar el origen de datos del formulario es que siempre te situaría, tras el refresco, en el primer registro.
Una solución para que el proceso se fuera realizando cuando navegaras por los registros sería, en el evento de formulario "Al activar registro", escribir algo así como:
...
Private sub...
If Not Me.NewRecord Then
If Len(Me.CampoX) = 1 Then 'Longitud del campo igual a uno
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
End If
End sub
---
Otra solución sería eliminar los registros de golpe al cerrar el formulario. Para eso, en el evento "Al cerrar", el código sería:
....
Private sub...
CurrentDb.Execute ("DELETE FROM NombreTabla WHERE len(Campo)=1")
End sub
...
Ahora bien, en tu pregunta indicas "si uno o varios campos... o un solo carácter". Y ahí ya no te puedo dar una respuesta a la construcción de la condición de filtro, dado que puede haber varias construcciones posibles en función de lo que necesites. Lo que tendrías que hacer es construirte la condición where con las diversas opciones que necesites, uniéndolas con el operador lógico OR.
Por ejemplo, si Campo1 no puede quedar nulo, Campo2 no puede ser nulo o debe tener una longitud mayor a un carácter, la expresión sería:
If isnull(me.Campo1) or isnull(me.Campo2) or len(Campo2)= 1 then
para el primer supuesto, o
WHERE isnull(Campo1) or isnull(Campo2) or len(Campo)=1"
Para el segundo.
A ver si con esto puedes sacar algo en claro.
End If