¿Como puedo colocar las horas laboradas por un empleado en su celda correspondiente, si tengo varios proyectos?(imagen anexa).

Les agradezco de antemano su ayuda en esta pregunta y disculpen la complejidad de mi petición.

Tengo un documento de Excel 2013, llamado "Control_Maestro", donde a través de una lista desplegable ubicada en ( C5 ) puedo visualizar a mis empleados (21 en total). En las celdas B11 y B13 tengo otras dos listas desplegables donde puedo ubicar mis proyectos (20 en total). Cada semana se tiene que enviar un reporte de las horas laboradas por empleado por el proyecto al que este asignado.

Me gustaría obtener una macro que ubique al empleado ( C5 ) en la lista desplegable y lo busque en la lista de todos los empleados que esta en B23:B43, busque los proyectos a los que esta cargando horas ( B11 y B13 ), las horas se colocaran manualmente en las celdas (para B11, O11:S11 y para B13, O13:S13), de lunes a viernes correspondientemente.

Después estas horas, suponiendo trabajaran 1 hora diaria, haga la sumatoria de las 5 horas y coloque la suma, en la celda correspondiente, dependiendo de la coordenada ( nombre-proyecto).

La macro se colocaría en el botón azul, como se muestra en la imagen, para que cada vez que se haga el cambio de empleado o proyecto, se pueda correr la macro.

Espero no causar muchas molestias con esta petición y cualquier duda o comentario, me pongo a sus ordenes. Saludos y muchas gracias.

1 Respuesta

Respuesta
3

H o l a:

Te anexo la macro

Sub ColocarHoras()
'Por.Dante Amor
    nombre = [C5]
    If nombre = "" Then
        MsgBox "Captura un nombre en C5"
        [C5].Select
        Exit Sub
    End If
    u = Range("B" & Rows.Count).End(xlUp).Row
    Set b = Range("B23:G" & u).Find(nombre, lookat:=xlWhole)
    If Not b Is Nothing Then
        fila = b.Row
        proy1 = [B11]
        If proy1 = "" Then
            MsgBox "Captura un proyecto en B11"
            [B11].Select
            Exit Sub
        End If
        Set b = Rows(22).Find(proy1, lookat:=xlWhole)
        If Not b Is Nothing Then
            col = b.Column
            tot1 = WorksheetFunction.Sum(Range("O11:S11"))
            Cells(fila, col) = tot1
        End If
        proy2 = [B13]
        If proy1 = "" Then
            Exit Sub
        End If
        Set b = Rows(22).Find(proy2, lookat:=xlWhole)
        If Not b Is Nothing Then
            col = b.Column
            tot2 = WorksheetFunction.Sum(Range("O13:S13"))
            Cells(fila, col) = tot2
        End If
        MsgBox "Horas actualizadas"
    Else
        MsgBox "El nombre no existe"
    End If
End Sub

' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Dante Amor.

La macro es más que excelente, es lo que necesitaba, para automatizar los reportes. Muy agradecido.

Saludos.

H o l a:

Observé un detalle en la macro, en esta parte:

        proy2 = [B13]
        If proy1 = "" Then

debe ser:

        proy2 = [B13]
        If proy2 = "" Then

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas