Mostrar una suma de más de 24 horas

Cunato con un datagrid que me muestra los emplados y horas que trabajo, mediante este código sumo una columna de horas extras
Private Sub Text2_Click()
Dim i As Integer
    Dim ret As Date
    DataGrid1.Row = 0
    'Recorremos todos los datos de la columna en la que hicimos click
    For i = 0 To DataGrid1.ApproxCount - 1
        If Not IsNull(DataGrid1.Columns(2).CellValue(DataGrid1.GetBookmark(i))) Then
            ret = ret + CDbl(DataGrid1.Columns(CInt(9)).CellValue(DataGrid1.GetBookmark(i)))
        End If
        DoEvents
    Next
Text2 = ret
End Sub
Me hace todo bien hasta que me toca un trabajador que tiene más de 24 horas extras, me aparece esto
31/12/1899 11:48:00
Yo se que es por que transforma más de 24 horas a días, pero como puedo mostrar a horas y minutos

1 Respuesta

Respuesta
1
Para ayudarte necesito saber qué tienes en
DataGrid1. Columns(CInt(9)). CellValue(DataGrid1. GetBookmark(i)) ¿Son fechas? Si no son fechas ¿por qué ret está declarado como Date?
¿Qué se supone que debería contener ret al finalizar el ciclo?
Saludos, son horas por ejemplo
01:00:00 (una hora extra)
00:18:00 (18 minutos extras)
00:30:00 (media hora extra)
Así hasta fin de mes o 30 días, ret al final contiene la suma de todas las lineas de la columna 9, si son menos de 24 horas me da la suma correcta, por ejemplo si suma lo anterior me da
01:48:00, pero si el trabajador tiene más de 24 horas me sale el otro formato
Gracias de antemano
Podrías utilizar algo como esto, donde cuenta, almacena la cantidad de minutos y luego se hace una conversión a horas y minutos para asignar a text2.
(Si te envía algún error, es que se me fue algún paréntesis)
Espero que te sirva.
Private Sub calcular()
Dim i As Integer
    Dim cuenta as integer
    DataGrid1.Row = 0
    'Recorremos todos los datos de la columna en la que hicimos click
    For i = 0 To DataGrid1.ApproxCount - 1
        If Not IsNull(DataGrid1.Columns(2).CellValue(DataGrid1.GetBookmark(i))) Then
            cuenta = cuenta + DateDiff("n", "00:00:00",DataGrid1.Columns(CInt(9)).CellValue(DataGrid1.GetBookmark(i)))
        End If
    Next
    Text2 = cuenta \ 60 & ":" & (cuenta Mod 60)
End Sub
Grande, realmente eres un experto, me funciono a la primera, en ningún lado de la net puede encontrar algo
100 puntos para ti, y muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas