Foro VBATotal
Aprender a programar en Visual Basic
Restar Fechas
Cita de JUES en 23 de enero de 2024, 21:03Tengo una duda acerca de como configurar una macro que me permita calcular la edad de una persona partiendo desde la Fecha de Nacimiento (TextBox6) hasta la Fecha del Evento (TextBox8) que adicionalmente ajuste la edad si aún la persona no ha tenido su cumpleaños y que el resultado quede reflejado en el TextBox9 he intentado replicar cosas que he visto por allí con DateDiff pero no obtengo el resultado que deseo
Mucho les sabre agradecer la ayuda que me puedan brindar
Tengo una duda acerca de como configurar una macro que me permita calcular la edad de una persona partiendo desde la Fecha de Nacimiento (TextBox6) hasta la Fecha del Evento (TextBox8) que adicionalmente ajuste la edad si aún la persona no ha tenido su cumpleaños y que el resultado quede reflejado en el TextBox9 he intentado replicar cosas que he visto por allí con DateDiff pero no obtengo el resultado que deseo
Mucho les sabre agradecer la ayuda que me puedan brindar
Cita de Administrador en 24 de enero de 2024, 09:35Buenos días Jues,
Prueba con esto:
TextBox9 = Fix((TextBox8 - TextBox6) / 365.24)
Saludos.
Buenos días Jues,
Prueba con esto:
TextBox9 = Fix((TextBox8 - TextBox6) / 365.24)
Saludos.
Cita de JUES en 24 de enero de 2024, 23:10Cita de Administrador en 24 de enero de 2024, 09:35Buenos días Jues,
Prueba con esto:
TextBox9 = Fix((TextBox8 - TextBox6) / 365.24)
Saludos.
Saludos @fito espero estés bien probé lo que me enviaste y no me devuelve el resultado esperado de hecho no me muestra nada en el TextBox3 (por equivocación te indiqué que era el TextBox9) te voy a poner en contexto en i proyecto debo de calcular dos datos Edad (TextBox3) y Antigüedad (TextBox9)
a partir de tres fechas: Fecha Nacimiento (TextBox6), Fecha Ingreso (TextBox7) y Fecha del Evento (TextBox8) en la actualidad tengo esta macro para calcular la edad: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 = edadEnd Sub
Sin embargo, calcula la edad en base a la resta la Fecha Nacimiento (TextBox6) menos la Fecha Actual pero lo que necesito es calcular la edad de una persona partiendo desde la Fecha de Nacimiento (TextBox6) hasta la Fecha del Evento (TextBox8) como te indique en mi primer mensaje, he intentado modificarla de la siguiente forma
Private Sub TextBox6_Change()
' Calculo de la Edad
Dim fechaNacimiento As Date
Dim fechaAccidente As DatefechaNacimiento = TextBox6
fechaAccidente = TextBox8Dim edad As Integer
edad = Year(fechaAccidente) - Year(fechaNacimiento)If fechaAccidente > DateSerial(Year(fechaNacimiento), Month(fechaNacimiento), Day(fechaNacimiento)) Then
edad = edad - 1
End IfTextBox3 = edad
End Sub
Pero al introducir los datos en el orden que los tengo (TextBox6, TextBox7, TextBox8) al apenas introducir la fecha de nacimiento (TextBox6) me indica que “Se ha producido un error 13 en tiempo de ejecución: No coinciden los tipos” pero si introduzco primero la fecha del evento (TextBox8) y luego los otros datos (fecha de nacimiento (TextBox6) y fecha de ingreso (TextBox7)) si me arroja el resultado esperado en la casilla Edad (TextBox3) pero no me arroja resultados en la Antigüedad (TextBox9)
Te adjunto mi proyecto para que puedas revisar más detalladamente
Usuario: Prueba
Clave: Prueba12345Agradecido de antemano
Cita de Administrador en 24 de enero de 2024, 09:35Buenos días Jues,
Prueba con esto:
TextBox9 = Fix((TextBox8 - TextBox6) / 365.24)
Saludos.
Saludos @fito espero estés bien probé lo que me enviaste y no me devuelve el resultado esperado de hecho no me muestra nada en el TextBox3 (por equivocación te indiqué que era el TextBox9) te voy a poner en contexto en i proyecto debo de calcular dos datos Edad (TextBox3) y Antigüedad (TextBox9)
a partir de tres fechas: Fecha Nacimiento (TextBox6), Fecha Ingreso (TextBox7) y Fecha del Evento (TextBox8) en la actualidad tengo esta macro para calcular la edad:
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, calcula la edad en base a la resta la Fecha Nacimiento (TextBox6) menos la Fecha Actual pero lo que necesito es calcular la edad de una persona partiendo desde la Fecha de Nacimiento (TextBox6) hasta la Fecha del Evento (TextBox8) como te indique en mi primer mensaje, he intentado modificarla de la siguiente forma
Private Sub TextBox6_Change()
' Calculo de la Edad
Dim fechaNacimiento As Date
Dim fechaAccidente As Date
fechaNacimiento = TextBox6
fechaAccidente = TextBox8
Dim edad As Integer
edad = Year(fechaAccidente) - Year(fechaNacimiento)
If fechaAccidente > DateSerial(Year(fechaNacimiento), Month(fechaNacimiento), Day(fechaNacimiento)) Then
edad = edad - 1
End If
TextBox3 = edad
End Sub
Pero al introducir los datos en el orden que los tengo (TextBox6, TextBox7, TextBox8) al apenas introducir la fecha de nacimiento (TextBox6) me indica que “Se ha producido un error 13 en tiempo de ejecución: No coinciden los tipos” pero si introduzco primero la fecha del evento (TextBox8) y luego los otros datos (fecha de nacimiento (TextBox6) y fecha de ingreso (TextBox7)) si me arroja el resultado esperado en la casilla Edad (TextBox3) pero no me arroja resultados en la Antigüedad (TextBox9)
Te adjunto mi proyecto para que puedas revisar más detalladamente
Usuario: Prueba
Clave: Prueba12345
Agradecido de antemano
Archivos subidos:- Tienes que conectarte para acceder a las subidas.
Cita de Administrador en 25 de enero de 2024, 07:44He movido el tema al foro de Excel. Lo habías abierto en el de Access.
Le echo un vistazo y te digo algo.
Saludos.
He movido el tema al foro de Excel. Lo habías abierto en el de Access.
Le echo un vistazo y te digo algo.
Saludos.
Cita de Administrador en 25 de enero de 2024, 09:28Buenos días,
Adjunto el programa funcionando.
He añadido el siguiente código en los eventos de actualización de los textbox 6 y 8,
edad = DateDiff("y", Me.TextBox6, Me.TextBox8) / 365.24
TextBox3 = Fix(edad)Para trabajar más rápido, he desactivado cositas del programa. Te recomiendo copiar este código en el tuyo y trabajar con tu versión.
Saludos.
Buenos días,
Adjunto el programa funcionando.
He añadido el siguiente código en los eventos de actualización de los textbox 6 y 8,
edad = DateDiff("y", Me.TextBox6, Me.TextBox8) / 365.24
TextBox3 = Fix(edad)
Para trabajar más rápido, he desactivado cositas del programa. Te recomiendo copiar este código en el tuyo y trabajar con tu versión.
Saludos.
Archivos subidos:- Tienes que conectarte para acceder a las subidas.
Cita de JUES en 6 de febrero de 2024, 13:20Saludos @fito espero estes bien
Me funciono esta solucion y te la comparto
Private Sub TextBox6_Change()
'Calculo de la Edad
If TextBox6.Value = "" Then Exit Sub
TextBox3 = Age(TextBox6.Value)End Sub
Function Age(varBirthDate As Variant) As Integer
' Calculo de la Edad
Dim varAge As VariantIf IsNull(varBirthDate) Then Age = 0: Exit Function
varAge = DateDiff("yyyy", varBirthDate, Now)
If Date < DateSerial(Year(Now), Month(varBirthDate), _
Day(varBirthDate)) Then
varAge = varAge - 1
End If
Age = CInt(varAge)
End FunctionAgradecido por tus respuestas a mis inquietudes
Saludos @fito espero estes bien
Me funciono esta solucion y te la comparto
Private Sub TextBox6_Change()
'Calculo de la Edad
If TextBox6.Value = "" Then Exit Sub
TextBox3 = Age(TextBox6.Value)
End Sub
Function Age(varBirthDate As Variant) As Integer
' Calculo de la Edad
Dim varAge As Variant
If IsNull(varBirthDate) Then Age = 0: Exit Function
varAge = DateDiff("yyyy", varBirthDate, Now)
If Date < DateSerial(Year(Now), Month(varBirthDate), _
Day(varBirthDate)) Then
varAge = varAge - 1
End If
Age = CInt(varAge)
End Function
Agradecido por tus respuestas a mis inquietudes
Cita de Administrador en 7 de febrero de 2024, 08:21Gracias por el aporte 😉
Gracias por el aporte 😉