Veamos... aquí tienes varios problemas, y con la información que suministras es imposible conocer todos los detalles del problema. Las dudas retóricas que planteo son:
1.- Ese campo sí/no probablemente tendrá un valor predeterminado, que imagino será NO
2.- ¿Qué pasa si no hay valores de fechas?
3.- ¿Qué pasa si te vas moviendo entre registros que ya están informados? ¿Qué pasa si el registro es un nuevo registro?
En consecuencia, es difícil darte una respuesta que te funcione bien, salvo que por suerte suene la campanilla.
Así que te voy a indicar el código que, salvo mayores detalles, yo pondría, suponiendo que todos los elementos que intervienen en el código tienen su propio control en el formulario:
a) En el módulo asociado al formulario, bajo la/s línea/s Option:
Private sub realizoCalculo()
If not me.newrecord then
If isnull(me.fechaA) then
msgbox "No se pueden realizar los cálculos pues falta información de la fecha A"
Exit sub
End if
If me.CampoSiNo=-1 then 'el campo es Sí
If isnull(me.fechaB) then
msgbox "No se pueden realizar los cálculos pues falta información de la fecha B"
Exit sub
End if
me.CampoSí=me.fechaB-me.fechaA
me.CampoNo=null
Else 'el campo es No
If isnull(me.fechaC) then
msgbox "No se pueden realizar los cálculos pues falta información de la fecha C"
Exit sub
End if
me.CampoNo=me.fechaC-me.fechaA
me.CampoSí=null
End if
End if
End sub
b) En el evento "Al activar registro" del formulario
Private sub Form_Current()
Call realizoCalculo
End sub
c) En el evento "Después de actualizar" del contro sí/no
Private sub...()
Call realizoCalculo
End sub
Ojo: lo anterior está escrito a vuelapluma y, como indicaba al principio, me baso en la suposición de que todos los elementos intervinientes están como controles en el formulario.
Saludos
Neckkito (http://bit.ly/NckAccess)