Disculpa la demora en responderte. La vida es corta y compleja :)
La validación que pretendes se hace de un modo u otro dependiendo de donde estén los campos a comparar, el botón...(en el mismo formulario u otro sitio). Te escribo código que comparar si importe de un campo llamado MontoARestar es mayor que un campo llamado SaldoCliente.
Option Compare Database
Option Explicit
Dim ValorValidoInferiorASaldo As Boolean
En el evento BeforeUpdate del campo del importe a restar asocias un código como el siguiente:
Private Sub MontoARestar_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_MontoARestar_BeforeUpdate
If Me!MontoARestar > Me!SaldoCliente Then
ValorValidoInferiorASaldo= False
Else
ValorValidoInferiorASaldo= True
End If
Exit_MontoARestar_BeforeUpdate:
Exit Sub
Err_MontoARestar_BeforeUpdate:
MsgBox Err.Description
Resume Exit_MontoARestar_BeforeUpdate
End Sub
Este evento comprueba si el cliente tiene saldo suficiente. En caso de no tenerlo establece el valor de la variable ValorValidoInferiorASaldo a False y de tenerlo en True.
Este valor se usará en el código siguiente que asocias al eventoAfterUpdate del mismo control MontoARestar.
Private Sub MontoARestar_AfterUpdate()
On Error GoTo Err_MontoARestar_AfterUpdate
If ValorValidoInferiorASaldo= False Then
Dim msg As String, title As String, estilo
estilo = vbOKOnly + vbCritical
title = "Control de monto"
msg = "No es posible registrar un monto superior al saldo del cliente."
msg = msg & vbLf & vbCrLf & "Intoduzca un nuevo monto inferior."
MsgBox msg, estilo, title
Me!MontoArestar = Null
Me!XXX.SetFocus
Me!MontoArestar.SetFocus
Else
'Aquí dejamos guardar el valor del campo MontoARestar...
End If
Exit_MontoARestar_AfterUpdate:
Exit Sub
Err_MontoARestar_AfterUpdate:
MsgBox Err.Description
Resume Exit_MontoARestar_AfterUpdate
End Sub
Aquí si ValorValidoInferiorASaldo es False avisamos, establecemos el valor a nulo y tras enviar el enfoque a cualquier otro campo del subformulario (cambia XXX por el nombre de otro campo) lo enviamos de nuevo al campo MontoARestar.
Esto completado con la acción que hace el botón (restar de SaldoCliente el MontoARestar) que se ejecuta si ValorValidoInferiorASaldo es True debiera de completar tu validación.
En tu caso por lo que veo al releerme tu comentario debes de hacer lo mismo con monto productos y monto cliente.
Repito que depende de como lo tengas diseñado tendrás que modificar algo el código. SI sigues con problemas detalla un poco mas como son los objetos que usas.
Cordiales saludos.