Visual Basic para Aplicaciones - Calcular Edad en años, meses y días en visual basic 6.0

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 28
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por Michael Elvis (16 intervenciones) el 05/02/2019 03:31:58
Hola con todos, por favor si me podrían ayudar, tengo un problema en realizar el calculo de edad de una persona en años, meses y días. Ingrese o copie unos códigos de aqui pero me esta calculando mal.
Tengo dos textbox, el primero es textbox1 donde ingreso la fecha de nacimiento (dd/mm/aaaa) y el segundo es el textbox2 donde al dar tab en el textbox1 debe salir la edad.
Ejemplo: si ingreso 14/09/1980 al dar el tab en el textbox2 deberia calcular la edad 38A 5M 5D, ojo que es un ejemplo.
El código que tengo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub txt_fecnac_AfterUpdate()
 
Dim fecActual As Date
Dim fecNac As Date
Dim anos, meses, dias As Long
fecActual = Now
fecNac = CDate(txt_fecnac.Text)
anos = DateDiff("yyyy", fecNac, fecActual)
meses = DateDiff("m", fecNac, fecActual) - (anos * 12)
dias = DateDiff("d", CDate(Day(fecNac) & "/" & (Month(fecActual) - IIf(Day(fecNac) >= Day(fecActual), 1, 0)) & "/" & Year(fecActual)), Now)
txt_edad.Text = anos & "A " & meses & "M " & dias & "D"
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 138
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por gilman (47 intervenciones) el 05/02/2019 08:27:16
Prueba la siguiente clase:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Option Explicit
 
 
'local variable(s) to hold property value(s)
Private mvarFecha As Date 'local copy
Public Function Dias() As Integer
    Dim x As Date
 
    If DatePart("d", Date) >= DatePart("d", Fecha) Then
        Dias = DatePart("d", Date) - DatePart("d", Fecha)
    Else
        x = DateSerial(DatePart("yyyy", Date), DatePart("m", Date) - 1, DatePart("d", Fecha))
        Dias = DateDiff("d", x, Date)
    End If
End Function
 
Public Function Meses() As Integer
    Dim Mes As Integer
    Meses = DatePart("m", Date) - DatePart("m", Fecha)
    If DatePart("d", Date) < DatePart("d", Fecha) Then
        Meses = Meses - 1
    End If
    Meses = (Meses + 12) Mod 12
End Function
 
Public Function Annos() As Integer
    Dim Cumple As Date
    'Edad coincidira con el valor esperado si ya ha cumplido años este año
    Annos = DatePart("yyyy", Date) - DatePart("yyyy", Fecha)
    Cumple = DateSerial(DatePart("yyyy", Date), DatePart("m", Fecha), DatePart("d", Fecha))
    If Cumple > Date Then
        'No ha cumplido años este año, tiene un año menos
        Annos = Annos - 1
    End If
End Function
 
Public Property Let Fecha(ByVal vData As Date)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.Fecha = 5
    mvarFecha = vData
End Property
 
 
Public Property Get Fecha() As Date
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.Fecha
    Fecha = mvarFecha
End Property
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 28
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por Michael Elvis (16 intervenciones) el 05/02/2019 17:20:06
Gracias, pero la verdad no lo entiendo, no hay otra forma de hacerlo mas sencillo???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 138
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por gilman (47 intervenciones) el 05/02/2019 18:43:54
Es posible que parezca complicado, en realidad no lo es tanto, pero soluciona problemas con los anyos bisiesros fechas extremas para el calculo, y ademas su uso es muysencillo, se establece la fecha de nacimiento ya partir de ese momento las propiedades te dan los anyos meses y dias que tiene la persona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha aumentado 1 puesto en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por Michael Elvis (16 intervenciones) el 09/02/2019 01:55:16
Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Edad en años, meses y días en visual basic 6.0

Publicado por Kobe Roandy Avila (1 intervención) el 06/10/2022 17:53:42
Men, muchas gracias, me ayudaste mucho y la verdad tu codigo si sirve y no es dificil de entener.
ya unicamente al final programe un boton que llama a las funciones annos, meses y dias en un respectivo textbox para cada caso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar