Boa tarde a todos do fórum.
Fazendo questão de mostrar aqui a melhor função para cálculo de datas que usei (sempre nas outras aconteciam erros) do mestre Avelino (com modificação simples para uso de duas datas), aproveito para pedir uma ajuda...
Teria como realizar uma subtração de tempo entre datas usando essa função?
Exemplo: Vamos dizer que algo deveria ser feito entre 01/01/2019 e 01/08/2019, porém, teve um período entre essas datas, entre 05/03/2019 e 25/05/2019 em que o trabalho não foi realizado.
Teria como usando essa função realizar esse cálculo de 23/08/2019 - 01/01/2018 que dá pela função 1 ano 7 meses e 22 dias e ainda diminuir desse resultado o cálculo 25/05/2019 - 05/03/2019 que dá 2 meses e 20 dias?
Esse é só um exemplo.
Fazendo questão de mostrar aqui a melhor função para cálculo de datas que usei (sempre nas outras aconteciam erros) do mestre Avelino (com modificação simples para uso de duas datas), aproveito para pedir uma ajuda...
Teria como realizar uma subtração de tempo entre datas usando essa função?
Exemplo: Vamos dizer que algo deveria ser feito entre 01/01/2019 e 01/08/2019, porém, teve um período entre essas datas, entre 05/03/2019 e 25/05/2019 em que o trabalho não foi realizado.
Teria como usando essa função realizar esse cálculo de 23/08/2019 - 01/01/2018 que dá pela função 1 ano 7 meses e 22 dias e ainda diminuir desse resultado o cálculo 25/05/2019 - 05/03/2019 que dá 2 meses e 20 dias?
Esse é só um exemplo.
- Código:
Private Function fncIdadeCompleta(DataEnt As Date, DataSai As Date) As String
Dim ANOS As Byte, Meses, dias As Byte, DataRef As Date
Dim Resultado As Boolean
If IsNull(DataSai) = True Then
DataSai = Date
End If
If DataEnt > DataSai Or DataEnt = 0 Then
fncIdadeCompleta = ""
Exit Function
End If
If DataEnt = DataSai Then
fncIdadeCompleta = "Menos de 24 horas"
Exit Function
End If
'Ajusta ano bissexto
DataEnt = IIf(Format(DataEnt, "mm/dd") = "02/29", DataEnt - 1, DataEnt)
ANOS = Int((Format(DataSai, "yyyymmdd") - Format(DataEnt, "yyyymmdd")) / 10000)
Resultado = (Format(DataEnt, "mmdd") > Format(DataSai, "mmdd"))
DataRef = DateSerial(Year(DataSai) + Resultado, Format(DataEnt, "mm"), Format(DataEnt, "dd"))
Meses = DateDiff("m", DataRef, DataSai) + (Format(DataEnt, "dd") > Format(DataSai, "dd"))
Resultado = (Format(DataEnt, "dd") > Format(DataSai, "dd"))
DataRef = DateSerial(Year(DataSai), Format(DataSai, "mm") + Resultado, Format(DataEnt, "dd"))
DataRef = IIf(Format(DataEnt, "dd") <> Format(DataRef, "dd"), DataRef - Format(DataRef, "dd"), DataRef)
dias = CDbl(DataSai) - CDbl(DataRef)
fncIdadeCompleta = IIf(ANOS <= 1, IIf(ANOS = 0, "", ANOS & " ano "), ANOS & " anos ") & _
IIf(Meses <= 1, IIf(Meses = 0, "", Meses & " mes "), Meses & " meses ") & _
IIf(dias <= 1, IIf(dias = 0, "", dias & " dia "), dias & " dias ")
End Function