Tienes toda la razón, la culpa es mía por "Cortar" y "Pegar", y ya se sabe, en esta fechas(cualquier disculpa es válida).
Tengo una tabla Clientes con 92 Idcliente. En el formulario Pedido, si pongo

Cuando pulso Enter

Pulso Si

Cuando cierro el formulario Clientes

Relleno los datos

Me voy al siguiente registro y le pongo un Idcliente que "si sé que está"

Cuando pulso Enter

El código correcto es
Private Sub IdCliente_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "clientes", "idcliente=" & Me.IdCliente & "")) = 0 Then
Dim clientenuevo As Integer, título As String, mensaje As Integer
título = "El cliente que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
clientenuevo = MsgBox("¿Desea agregar este cliente a la lista ?", mensaje, título)
If clientenuevo = vbYes Then
DoCmd.OpenForm "clientes", acNormal, "", "", acAdd, acDialog
Response = acDataErrAdded
End If
End If
End Sub
De todas formas, personalmente usaría un combinado y usaría el evento Al no estar en lista.