Calcular los años en un campo independiente

Tengo un campo fecha de nacimiento DD/MM/AAAA, me gustaría saber cual es la fórmula para que me calcule automáticamente en un campo independiente la edad que tiene esa persona actualmente.

1 respuesta

Respuesta
1

En primer lugar, abre tu formulario en Vista Diseño, haz click con el botón derecho en el cuadro del campo fecha de nacimiento y dale a Propiedades.

Vete a la pestaña Eventos, colocate en la fila Después de actualizar, dale al botón de los 3 puntos que te aparece a la derecha de la fila, y en la ventana que aparece elige Generador de código.

Se te abrirá el editor de visual basic, y ahí, donde te sitúa el cursor (entre las lineas Private Sub... y End Sub), escribes este código:

'Comprobamos que se ha metido una fecha de nacimiento. Si no salimos
If IsNull(Me.FechaNac.Value) Then Exit Sub
'Comprobamos que la fecha de nacimiento no sea superior a la fecha actual
If Me.FechaNac.Value > Date Then
MsgBox "La fecha de acimiento no puede ser superior a la actual", vbCritical, "Error: Fecha Incorrecta"
Exit Sub
End If
'Asignamos el valor que devuelve la función fncEdad al campo independiente
Me.Edad.Value = fncEdad(Me.FechaNac.Value)

Lo que está en negrita tendrás que cambiarlo por los nombre que tengan tus cuadros de texto. Puedes verlo en la pestaña Otras->Nombre de cada uno. Si los nombre tuvieran espacios, como por ejemplo "fecha nacimiento", en el código deberás escribirlo así: fecha_nacimiento, o así: [fecha nacimiento]

Y para acabar, en el editor de visual basic, vas a Menú-> Insertar -> Módulo. Guardas el módulo con el nombre que quieras, por ejemplo: mdlEdad, y allí le pones esta función:

Public Function fncEdad(FechaNac As Date) As Integer
'Analizamos el mes de la fecha actual
Select Case Month(Date)
Case Is > Month(FechaNac)
'Si es mayor que el mes de la fecha de nacimiento, la edad es la diferencia de años
fncEdad = DateDiff("yyyy", FechaNac, Date)
Case Is < Month(FechaNac)
'Si es menor , la edad es la diferencia de años menos uno,
'pues aún no ha cumplido este año
fncEdad = DateDiff("yyyy", FechaNac, Date) - 1
Case Is = Month(FechaNac)
'Si estamos en el mismo mes, hay que analizar el día, para saber si ya ha cumplido o no
If Day(Date) < Day(FechaNac) Then 'Si el día actual es menor, aun no cumplió
fncEdad = DateDiff("yyyy", FechaNac, Date) - 1
Else
fncEdad = DateDiff("yyyy", FechaNac, Date)
End If
End Select
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas