Calcular diferencia de fechas

Gracias por tu ayuda... Vuelvo a tener que preguntarte... Verás en una misma rejilla tengo que sacar el nombre y fecha de nacimiento del alumno de mayor edad. Yo he puesto este código pero me da un fallo al usar la función datevalue.
Te agradecería me echarás un vistazo al código o me dijeras como puedo hacerlo.
Gracias por tu inestimable ayuda.
Un amigo.
Dim i As Integer
Dim ventana As String
Dim nombre As String
Dim fecha1 As String
Dim fecha As Date
Dim fecha_actual As Date
Dim edad As Integer
Dim edadmayor As Integer
mediamayor = 0
media = 0
nota1 = 0
nota2 = 0
nombre = ""
fecha_actual = Date
For i = 1 To rejilla.Rows - 1
rejilla.Col = 2 'se posiciona en la columna de fechas
rejilla.Row = i 'se lee fila a fila gracias al bucle for
fecha = DateValue(Val(rejilla.Text)) ' se introduce la f/ en fecha
edad = DateDiff("yyyy", fecha, fecha_actual) 'calculamos la edad
edadmayor = edad ' asignamos la edad a edadmayor
If edadmayor < edad Then
'en el momento que una edad sea superior a la ya calculada
'es asignada como nueva edad
edadmayor = edad
rejilla.Col = 1 'se posiciona el columna 1 que es la q tiene
'los nombres
nombre = rejilla.Text 'asigna a nombre el valor de la celda
rejilla.Col = 2 'se posiciona en columna 2 que tiene las fechas
fecha1 = rejilla.Text ' toma el valor de la fecha y la almacena
End If
Next i
ventana = MsgBox("Alumno con mayor nota media es: " & nombre & " con un promedio de " _
& mediamayor & " y nacio el " & fecha & " ", vbInformation, "Resultado")
2

2 Respuestas

63.725 pts.
Lo primero, con el código que tienes cada vuelta edadmayor coge el valor de edad antes de tiempo, linea anterior al if, solución fuera del for inicializa el valor de edadmayor a cero junto con el resot de variables y elimina esta sentencia:
Edadmayor = edad ' asignamos la edad a edadmayor
dejala solo dentro del if...
Prueba a usar format para asignarle valor a fecha en vez de datevalue:
fecha=format(rejilla.text,"DD/MM/YYYY")
46.750 pts.
probá poniendo fecha = DateValue(CDate(rejilla.Text))
o directamente fecha = CDate(rejilla.Text)
Pruébalo y avisame si t aparece algún otro error...
Y disculpame por la demora, es que estoy en parciales

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas