Visual Basic para Aplicaciones - macro para calcular total de horas trabajadas

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

macro para calcular total de horas trabajadas

Publicado por roger (3 intervenciones) el 16/08/2020 09:20:50
Hola a tod@s

Tengo una tabla de tareas realizadas en la cual en la columna "G" tengo la hora de inicio y en la columna "H" tengo la hora final y quiero hacer una macro en la cual yo pueda seleccionar un rango cualquiera (seleccionando valores de la colmna G y su respectivo valor en la colmna H), luego los reste para calcular las horas trabajadas y sume el total de horas (restas) y me muestre ese total en un msgbox.

Por ejemplo en la esta imagen la macro al apretar el boton amarillo me deberia mostrar un mensaje "total de horas: 3"

he intentado buscar de todas las formas posibles pero no pude encontrar ejemplos asi :/. muchas gracias de antemano
Captura
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
sin imagen de perfil
Val: 7
Ha aumentado su posición en 20 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

macro para calcular total de horas trabajadas

Publicado por roger (3 intervenciones) el 16/08/2020 23:51:40
Hola a tod@s. Ya pude hacer la macro!
Por si a alguien le sirve, debajo sigue el código:

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
Sub calcular_total()
 
    Dim vector() As Date
    Dim resta, total As Date
    Dim rango As Range
    Dim i, j As Long
    Dim Fcont, Ccont As Long
 
    Set rango = Selection
    Fcont = rango.Rows.Count 'limite superior de fila
    Ccont = rango.Columns.Count 'limite superior de columnas
 
    'valido para que el verctor tenga si o si 2 columnas
    If Ccont = 2 Then
 
        'dimensiono el vector
        ReDim vector(1 To Fcont, 1 To Ccont)
 
        'pasar los valores del rango a un array
        For i = 1 To Fcont
            For j = 1 To Ccont
                vector(i, j) = rango.Cells(i, j).Value
            Next
        Next
 
        For i = 1 To Fcont
            resta = vector(i, 2) - vector(i, 1)
            total = total + resta
        Next
 
        MsgBox "El total de horas es: " & Hour(total) & " Hrs. " & "y " & Minute(total) & " Min."
 
    Else
 
        MsgBox "Debe seleccionar las horas de inicio y final"
 
    End If
 
End Sub
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