Te voy a responder, aunque no hayas valorado mi anterior respuesta. Se puede hacer de varias formas, para lo que habría que saber como son el formulario y subformulario. Supongamos que tengo una tabla Productos
Te los pongo por orden alfabético para que se vea mejor.
Si tengo el formulario Compras con el subformulario DetalleCompra
Creo una tabla llamada Aux como en la imagen
Esta tabla Aux, cuando se "rellene", será el origen de la fila del combinado producto del subformulario DetalleCompra
Cuando abro el formulario Compras en un registro nuevo, primero borra lo que hubiera en la tabla Aux, luego inserta en ella todos los productos de la tabla Productos de forma que cuando pongo el cursor en el combinado
Selecciono el primero Algas Kombu, cuando en otro registro del subformulario quisiera elegir otro Producto
Ya no me aparecen las algas. Si elijo Arenque ahumado, en el siguiente
Ya no aparece, etc
Cuando me fuera a una compra nueva se repetiría el proceso.
En el formulario Compras, en el evento Al activar el registro le tengo puesto
Private Sub Form_Current()
NumFactura.SetFocus
If Me.NewRecord Then
DoCmd.RunSQL "delete * from Aux"
DoCmd.RunSQL "insert into aux select producto from productos"
End If
End Sub
Y en los eventos Al recibir el enfoque y Después de actualizar del combinado Producto
Private Sub Producto_AfterUpdate()
Antes = DLookup("existencias", "productos", "producto='" & Me.Producto & "'")
DoCmd.RunSQL "delete * from aux where producto='" & Me.Producto & "'"
Precio.SetFocus
End Sub
Private Sub Producto_GotFocus()
Producto.Requery
End Sub
Es decir, elimina de la tabla Aux el producto que acabo de elegir y cuando recibe el enfoque, que "reconsulte" su origen de la fila.