"Alberto Méndez" <anf...@lacapitalnet.com.ar> escribió en el mensaje
news:6b8e01c10f8b$feb2b540$19ef2ecf@tkmsftngxa01...
5539 = 15 años, 2 meses, 4 dias
lo cual hace esta función
Public Function AMD(ByVal NumDias As Long) As String
Dim Años As Integer
Dim Meses As Integer
Dim Dias As Integer
Años = NumDias \ 365
Meses = (NumDias - (Años * 365)) \ 30
Dias = NumDias - (Años * 365) - (Meses * 30)
AMD = Años & " años, " & Meses & " meses, " & Dias & " dias "
End Function
Alberto Méndez <anf...@lacapitalnet.com.ar> escribió en el mensaje de
noticias 6b8e01c10f8b$feb2b540$19ef2ecf@tkmsftngxa01...
Public Function AMD(ByVal NumDias As Long) As String
Dim Años As Integer
Dim Meses As Integer
Dim Dias As Integer
Dim strPeriodo As String
Años = NumDias \ 365
Meses = (NumDias - (Años * 365)) \ 30
Dias = NumDias - (Años * 365) - (Meses * 30)
If Años > 1 Then
strPeriodo = Años & " años "
ElseIf Años = 1 Then
strPeriodo = Años & " año "
End If
If Meses > 1 Then
strPeriodo = strPeriodo & Meses & " meses "
ElseIf Meses = 1 Then
strPeriodo = strPeriodo & Meses & " mes "
End If
If Dias > 1 Then
strPeriodo = strPeriodo & Dias & " dias"
ElseIf Dias = 1 Then
strPeriodo = strPeriodo & Dias & " dia"
End If
AMD = strPeriodo
End Function
Otra opción
si le sumas, o restas, los 5539 días a la fecha a partir de la que quieres contarlos luego puedes aplicar la siguiente función
Saludos
Emilo
'***********************************************************************************************************
' Devuelve los días y/o los meses y/o los años transcurridos entre dos fechas
' deberá llevar la definición de tipo en el encabezado de un modulo
' Type Edad
' Dias As Byte
' Meses As Byte
' Años As Integer
' End Type
' p.ej.: Edad("15/1/01", Date).Dias devuelve los dias transcurridos desde el 15/01/01 hasta hoy
' ESH 01/06/01 19:52
'***********************************************************************************************************
Public Function Edad(DatFecha1 As Date, DatFecha2 As Date) As Edad
Dim bytDias As Long
Dim bytMeses As Byte
Dim intAños As Integer
Dim datPrimeraFecha As Date
Dim datSegundaFecha As Date
' ordeno correctamente las fechas
If DatFecha1 < DatFecha2 Then
datPrimeraFecha = DatFecha1
datSegundaFecha = DatFecha2
Else
datSegundaFecha = DatFecha1
datPrimeraFecha = DatFecha2
End If ' DatFecha1 < DatFecha2
' calculo la diferencia en años
intAños = DateDiff("yyyy", datPrimeraFecha, datSegundaFecha)
If format(datSegundaFecha, "mmdd") < format(datPrimeraFecha, "mmdd") Then
intAños = intAños - 1
End If ' format(datSegundaFecha, "mmdd") < format(datPrimeraFecha, "mmdd")
' calculo la diferencia en meses
bytMeses = DateDiff("m", datPrimeraFecha, datSegundaFecha) - (intAños * 12)
' calculo la diferencia en días
bytDias = DateDiff("d", format(datPrimeraFecha, "dd"), format(datSegundaFecha, "dd"))
If bytDias < 0 Then
bytMeses = bytMeses - 1
bytDias = DateDiff("d", DateSerial(Year(datSegundaFecha), Month(datSegundaFecha) - 1, Day(datPrimeraFecha)), datSegundaFecha)
End If ' bytDias < 0
' en cada caso devuelvo su valor
Edad.Dias = bytDias
Edad.Meses = bytMeses
Edad.Años = intAños
End Function ' Edad