Calcular fechas para arrojar resultado

Tendrás una fórmula o macro para calcular estos tres datos entre dos fechas (fecha de alta xx) y la (la fecha actual) y así conocer la antigüedad en años meses y días?

1 respuesta

Respuesta
2

Yo tengo esta función:

'--------------------------------------------------------------------------------------------
'Función para calcular diferencias entre fechas en años, meses y días
'Creada por Sveinbjorn para TodoExpertos-2015
'--------------------------------------------------------------------------------------------
Public Function fncDiferenciaFechas(ByVal laFechaIni As Date, ByVal laFechaFin As Date) As String
Dim vAño As Double
Dim vMes As Double
Dim vDia As Double
Dim temp As Date
'Si no se metió alguna de las dos fechas, salimos sin más
If IsNull(laFechaIni) Or IsNull(laFechaFin) Then
    fncDiferenciaFechas = ""
    Exit Function
End If
'Comprobamos que la fecha inicial sea más antigua que la final
If laFechaIni > laFechaFin Then
    temp = laFechaIni
    laFechaIni = laFechaFin
    laFechaFin = temp
ElseIf laFechaIni = laFechaFin Then 'Si las dos fechas son la misma
    fncDiferenciaFechas = "0 días"
    Exit Function
End If
'Calculas la diferencia en años
If Month(laFechaIni) > Month(laFechaFin) Then
    vAño = DateDiff("yyyy", laFechaIni, laFechaFin) - 1
Else
    vAño = DateDiff("yyyy", laFechaIni, laFechaFin)
End If
'Calculas la diferencia en meses
If Day(laFechaIni) > Day(laFechaFin) Then
    vMes = DateDiff("m", DateAdd("yyyy", vAño, laFechaIni), laFechaFin) - 1
    If vMes < 0 Then
        vMes = 12 + vMes
        vAño = vAño - 1
    End If
Else
    vMes = DateDiff("m", DateAdd("yyyy", vAño, laFechaIni), laFechaFin)
End If
'Calculas la diferencia en días
vDia = DateDiff("d", DateAdd("m", vAño * 12 + vMes, laFechaIni), laFechaFin) ' Mod 7
'Construyes la expresión
If vAño = 1 Then
    fncDiferenciaFechas = vAño & " año"
ElseIf vAño > 1 Then
    fncDiferenciaFechas = vAño & " años"
End If
If vMes = 1 Then
    fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vMes & " mes"
ElseIf vMes > 1 Then
    fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vMes & " meses"
End If
If vDia = 1 Then
    fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vDia & " día"
ElseIf vDia > 1 Then
    fncDiferenciaFechas = IIf(fncDiferenciaFechas = "", "", fncDiferenciaFechas & " y ") & vDia & " días"
End If
End Function

o puedes probar con esta de Emilio Sancha: http://www.mvp-access.es/emilio/Access/Fechas.asp#TiempoTranscurrido 

Hola me quedo con esta pero me vas a tener que ayudar un poco mas, no estoy muy ducho,

los nombre de mis campos son los siguientes Fecha Alta y Fecha Provi, en principio decime donde pongo el código y después reemplazo tus nombres por ejemplo 

laFechaIni por Fecha Alta
laFechaFin por Fecha Provi

gracias por la ayuda

Ah!, no tienes que cambiar nada en la función, sólo pasarle como parámetros los nombres de tus cuadros de texto de fechas o las variables o valores que quieras usar.

¡Gracias! Ok si ahora es más fácil, ya lo adapte a mis necesidades

Gracias nuevamente

Tienes algo que calcule, la cantidad de horas laborales de los días de la semana.

Ejemplo: de una quincena (2da quincena de febrero)

8 días de 9 hora =72

2  días de 8 horas= 16 

total de horas  de la quincena = 88 hs laborales

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Tomo del día 16 al 19 (Lun a Jueves ) 4 días de 9 horas // viernes 8 hs

Tomo del día 23 al 26 (lusnes a Jueves) 4 días de 9 hora // viernes 8 hs

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Si tienes algo como el ejemplo que me enviaste seria genial

Gracias

Esto ya sería una cuestión totalmente distinta a la original, y sería mejor que la plantearas en una pregunta nueva.

No tengo nada como lo que pides, pero si vas a la web del experto Neckkito, tiene un ejemplo explicado para calcular días laborales. Luego sólo tendrías que multiplicarlo por el número de horas al día y listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas