O más fácil aún:
Código:
Public Function CalculaEdad(ByVal DataIni As Date) As Long
CalculaEdad = Year(Date - DataIni) - 1900
End Function
Internamente, las fechas se tratan como números (Double, para ser exactos, la parte decimal tiene la hora). Si haces operaciones directamente con fechas, el resultado es el número de días entre ambas. Las fechas se cuentan a partir del 30 de diciembre de 1899, puedes ver la fecha correspondiente a cero días si ejecutas esta instrucción:
Código:
format(cdate(0), "dd/MM/yyyy hh:mm:ss")
Por tanto, de ahí que haya que restar 1900 al resultado de Year.
Realmente, la forma óptima de calcularlo sería:
Código:
CalculaEdad = Year(Date - DataIni) - Year(0) - 1
ya que así te curas en salud por si más adelante Microsoft decide que el día 0 corresponde a otra fecha, tienes en cuenta los años bisiestos y haces menos comprobaciones.
Yo había entendido que lo que te interesaba era saber si el día y el mes coincidían, independientemente del número de años. Pues si era eso, esto es mejor aún que lo que te había propuesto al principio:
Código:
Public Function MismoDiaYMes(Fecha As Date) as Boolean
MismoDiaYMes = Format(Date, "ddmm") = Format(Fecha, "ddmm")
End Function