Tengo esta macro que me ayuda a calcular la antigüedad medida desde la fecha de ingreso hasta la fecha accidente sin embargo solo me da como resultado el año como un numero entero y no me toma en cuenta la diferencia de los meses restantes entre ambas fechas la cual requiero expresar como decimales de forma anualizada :
Ejemplo: 15/08/2010 - 17/01/2004 = 13 Años (Resultado Actual)
15/08/2010 - 17/01/2004 = 05 meses de diferencia entre la fecha de ingreso y la fecha del accidente
05 meses / 12 Meses = 0,42 Años (Diferencia en Meses Anualizada)
15/08/2010 - 17/01/2004 = 13, 42 años (Resultado Esperado)
MesesAños
1/120,08
2/120,17
3/120,25
4/120,33
5/120,42
6/120,50
7/120,58
8/120,67
9/120,75
10/120,83
11/120,92
Private Sub TextBox8_Change()
' Calculo de la Antiguedad
' Definir una variable para la fecha del Accidente
Dim fechaAccidente As Date
' Asignar la fecha del Accidente
fechaAccidente = TextBox8
' Obtener la fecha de Ingreso
fechaIngreso = TextBox7
' Calcular la Antiguedad
Dim Antiguedad As Integer
Antiguedad = Year(fechaAccidente) - Year(fechaIngreso)
' Ajustar la Antiguedad si aún no ha tenido su cumpleaños este año
If fechaIngreso > DateSerial(Year(fechaAccidente), Month(fechaAccidente), Day(fechaAccidente)) Then
Antiguedad = Antiguedad - 1
End If
' Mostrar el resultado en la ventana de mensajes
TextBox9 = Antiguedad
End Sub
De igual modo tengo esta otra macro que me ayuda a calcular la Edad medida desde la fecha de nacimiento hasta la fecha actual:
Private Sub TextBox6_Change()
' Calculo de la Edad
' Definir una variable para la fecha de nacimiento
Dim fechaNacimiento As Date
' Asignar la fecha de nacimiento
fechaNacimiento = TextBox6
' Obtener la fecha actual
Dim fechaActual As Date
fechaActual = Date
' Calcular la Edad
Dim edad As Integer
edad = Year(fechaActual) - Year(fechaNacimiento)
' Ajustar la edad si aún no ha tenido su cumpleaños este año
If fechaNacimiento > DateSerial(Year(fechaActual), Month(fechaActual), Day(fechaNacimiento)) Then
edad = edad - 1
End If
' Mostrar el resultado en la ventana de mensajes
TextBox3 = edad
End Sub
Sin embargo no expresa el resultado que deseo ya que el calculo correcto debe ser hecho desde la fecha de nacimiento hasta la fecha accidente pero al momento de replicar el procedimiento en los siguientes términos me arroja un error:
Private Sub TextBox6_Change()
' Definir una variable para la fecha de nacimiento
Dim fechaAccidente As Date
' Asignar la fecha de nacimiento
fechaAccidente = TextBox8
' Asignar la fecha del Accidente
fechaNacimiento = TextBox6
' Calcular la Edad
Dim edad As Integer
edad = Year(fechaAccidente) - Year(fechaNacimiento)
' Ajustar la edad si aún no ha tenido su cumpleaños este año
If fechaNacimiento > DateSerial(Year(fechaAccidente), Month(fechaAccidente), Day(fechaAccidente)) Then
edad = edad - 1
End If
' Mostrar el resultado en la ventana de mensajes
TextBox3 = edad
End Sub
Usuario: Prueba
Clave: Prueba12345
Mucho les sabre agradecer la ayuda que me puedan brindar
Saludos Amigos
Tengo esta macro que me ayuda a calcular la antigüedad medida desde la fecha de ingreso hasta la fecha accidente sin embargo solo me da como resultado el año como un numero entero y no me toma en cuenta la diferencia de los meses restantes entre ambas fechas la cual requiero expresar como decimales de forma anualizada :
Ejemplo: 15/08/2010 - 17/01/2004 = 13 Años (Resultado Actual)
15/08/2010 - 17/01/2004 = 05 meses de diferencia entre la fecha de ingreso y la fecha del accidente
05 meses / 12 Meses = 0,42 Años (Diferencia en Meses Anualizada)
15/08/2010 - 17/01/2004 = 13, 42 años (Resultado Esperado)
Meses Años
1/12 0,08
2/12 0,17
3/12 0,25
4/12 0,33
5/12 0,42
6/12 0,50
7/12 0,58
8/12 0,67
9/12 0,75
10/12 0,83
11/12 0,92
Private Sub TextBox8_Change() ' Calculo de la Antiguedad ' Definir una variable para la fecha del Accidente Dim fechaAccidente As Date ' Asignar la fecha del Accidente fechaAccidente = TextBox8 ' Obtener la fecha de Ingreso fechaIngreso = TextBox7 ' Calcular la Antiguedad Dim Antiguedad As Integer Antiguedad = Year(fechaAccidente) - Year(fechaIngreso) ' Ajustar la Antiguedad si aún no ha tenido su cumpleaños este año If fechaIngreso > DateSerial(Year(fechaAccidente), Month(fechaAccidente), Day(fechaAccidente)) Then Antiguedad = Antiguedad - 1 End If ' Mostrar el resultado en la ventana de mensajes TextBox9 = Antiguedad End Sub
De igual modo tengo esta otra macro que me ayuda a calcular la Edad medida desde la fecha de nacimiento hasta la fecha actual:
Private Sub TextBox6_Change() ' Calculo de la Edad ' Definir una variable para la fecha de nacimiento Dim fechaNacimiento As Date ' Asignar la fecha de nacimiento fechaNacimiento = TextBox6 ' Obtener la fecha actual Dim fechaActual As Date fechaActual = Date ' Calcular la Edad Dim edad As Integer edad = Year(fechaActual) - Year(fechaNacimiento) ' Ajustar la edad si aún no ha tenido su cumpleaños este año If fechaNacimiento > DateSerial(Year(fechaActual), Month(fechaActual), Day(fechaNacimiento)) Then edad = edad - 1 End If ' Mostrar el resultado en la ventana de mensajes TextBox3 = edad End Sub
Sin embargo no expresa el resultado que deseo ya que el calculo correcto debe ser hecho desde la fecha de nacimiento hasta la fecha accidente pero al momento de replicar el procedimiento en los siguientes términos me arroja un error:
Private Sub TextBox6_Change() ' Definir una variable para la fecha de nacimiento Dim fechaAccidente As Date ' Asignar la fecha de nacimiento fechaAccidente = TextBox8 ' Asignar la fecha del Accidente fechaNacimiento = TextBox6 ' Calcular la Edad Dim edad As Integer edad = Year(fechaAccidente) - Year(fechaNacimiento) ' Ajustar la edad si aún no ha tenido su cumpleaños este año If fechaNacimiento > DateSerial(Year(fechaAccidente), Month(fechaAccidente), Day(fechaAccidente)) Then edad = edad - 1 End If ' Mostrar el resultado en la ventana de mensajes TextBox3 = edad End Sub
Usuario: Prueba
Clave: Prueba12345
Mucho les sabre agradecer la ayuda que me puedan brindar
PRUEBA.xlsm