Urgente con Fechas please "MaskedBox"

Spow
14 de Febrero del 2005
Hola amigo, tengo una duda referente a la validacion de las fechas ya he realizado la siguiente rutina:

Private Sub MKBfecnac_KeyPress(KeyAscii As Integer)
Dim A As Date
Dim B As Date
A = CDate("01/01/1997")
B = CDate("01/01/1850")
If KeyAscii = 13 Then
On Error GoTo ErrorEnFecha
If MKBfecnac <> "__/__/____" Then
If IsDate(MKBfecnac) = True And MKBfecnac.Text <= A And MKBfecnac.Text >= B Then
fecnac = MKBfecnac
SendKeys "{tab}"
KeyAscii = 0
Else
VARMSG1 = MsgBox("La Fecha de Nacimiento es Invalida!!!", vbExclamation, "Atención")
MKBfecnac.Text = "__/__/____"
MKBfecnac.SetFocus
End If
Else
VARMSG1 = MsgBox("La Fecha de Nacimiento es Invalida!!!", vbExclamation, "Atención")
MKBfecnac.Text = "__/__/____"
MKBfecnac.SetFocus
End If
ErrorEnFecha:
If Err = 13 Then
VARMSG1 = MsgBox("La Fecha de Nacimiento es Invalida!!!", vbExclamation, "Atención")
MKBfecnac.Text = "__/__/____"
MKBfecnac.SetFocus
End If
On Error GoTo 0
End If
End Sub

Resulta que me valida el día y el año perfectamente pero el mes no, por ejemplo si coloco 30/02/2005 me muestra el mensaje de error respectivo ya que no es correcto pero resulta que si coloco 30/20/2005 o cualquier otro mes fuero de lo normal no me hace la validación.. Agradezco en lo que puedas ayudarme, me imagino que debe ser una tonteria donde estoy fallando.
Tambien me gustaria saber como puedo hacer ya que necesito que el sistema me tome los registros que la fecha de nacimiento sea que el niño tenga de 9 años en adelante. En este caso le estable en la variable el año 1997 para que se cumpla lo que deseo pero como puedo hacer para que tomando el date del PC automaticamente me haga los calculos para que cada año se incremente y no tenga que modificar el código?? Gracias por toda la colaboración y estamos a la orden =)

aijuna
14 de Febrero del 2005
lo que pasa es que la comparacion MKBfecnac.Text <= A te tira un error 13 porque estas comparando un texto (lo de MKBfecnac) con una fecha, son dos cosas diferentes, yo te recomiento es que busques informacion de fecha Juliana, que es una funcion para convertir una fecha en un numero entero y con eso haces las comparaciones mucho mas faciles, sobre todo si trabajas con base de datos.
con respecto a lo segundo pones
A = DateAdd("yyyy", -9, Date)
eso te pone en A la fecha del dia - 9 años
Si trabajas con fechas te van a servir:
dateadd, detadiff, year, month, day, Weekday.