Pessoal, estou começando agora e queria a ajuda de alguém que resolvesse o problema do código abaixo:
'data inicial é 08/02/1988 e a data final é 29/12/2000
'o resultado contando dia a dia tem que dar exatamente: 12 anos, 10 meses e 29 dias é claro que contando também com o dia 29 Dez 00
'anos é total de dias divido por 365
'meses é o resto de dias dividido por 30
'dias é o resto (Obs: datadiff direto não dá certo)
'Função para calcular a idade certa de uma pessoa
Public Function CalculaTempo(Var1 As Date, MostraAnos As Boolean) As String
Dim Var2 As Date
Var3 As Double
Tempoemanos As Integer
bissextos As Integer
Dim O1ebissexto As Boolean
Contamtodos As Boolean
Anoquero As Integer
Tempoemdias As Double
Var2 = Date
'**** vamos ver se a diferença entre as duas datas é inferior ou igual a 1 ano
Var3 = Var2 - Var1
'**** se a diferença é menor que 365
If (Var3 < 365) Then
Tempoemanos = 0
'**** se fo igual a 365 ou 366
If ((Var3 = 365) Or (Var3 = 366)) Then
Tempoemanos = 1
'**** se a data for maior, há que fazer contas
If (Var3 > 366) Then
'**** vamos ver se o 1º ano é bissexto
If ((Year(Var1) Mod 4) = 0) Then
O1ebissexto = True
Else: O1ebissexto = False
End If
'**** vamos ver quantos anos bissextos houve entre as duas datas
bissextos = 0
Anoquero = Year(Var2)
Do While 1 = 1
If (Anoquero < Year(Var1)) Then
Exit Do
If ((Anoquero Mod 4) = 0) Then
bissextos = (bissextos + 1)
Anoquero = Anoquero - 1
Loop
'Verificar se o mês do primeiro ano (data inicial) e Jan ou Fev no caso de ser um ano bissexto
If (O1ebissexto = True) Then
If (Month(Var1) < 3) Then
Contamtodos = True
Else
Contamtodos = False
End If
Else
Contamtodos = True
End If
'**** agora vamos fazer contas
Tempoemdias = Var2 - Var1
'**** vamos acrescentar um dia para cada ano bissexto (se a data inicial for partir do mês 2)
If (Contamtodos = True) Then
Tempoemdias = Tempoemdias + bissextos
Else
Tempoemdias = Tempoemdias + bissextos + 1
End If
'**** finalmente o tempo em anos
CalculaTempo$ = Format((Tempoemdias365))
If (MostraAnos = True) Then
CalculaTempo$ = (CalculaTempo$ & " anos")
End If
End Function