Visual Basic para Aplicaciones - Ayuda con MACRO por facor

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

Ayuda con MACRO por facor

Publicado por Marcos José (22 intervenciones) el 24/01/2020 08:20:24
Quisiera pediros un favor si puede ser ya que no se por donde tirar, necesito hacer una macro que cada dia se ejecute al abrir el libro y que haga lo siguiente:

Ha de coger los datos de la hoja Tabla_Horas_Trabajadas, en concreto los campos Nº EMPLEADO, NOMBRE, HORA ENTRADA Y HORA SALIDA y los copie en la hoja Resumen_Semanal, cada día de lunes a sábado, y que también me borre los datos del listbox que hay dentro del UserRegistroHoras, cada dia.
Espero que me haya explicado bien y ojala puedas ayudarme.
De ante mano gracias por vuestra atención
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 MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por MIGUEL (121 intervenciones) el 24/01/2020 20:56:10
Buenas Marcos

te dejo la macro en modulo1

una sugerencia, deberías corregir esas almohadillas, para mucha gente es perturbador verlas en las celdas, y piensan que es un error, te deje una formula en la primer celda, es sencilla y ya no se verán las almohadillas. y las sumas en las horas totales no serán erróneas como con las almohadillas, lo puedes verificar si borras 2 días en el reporte semanal y observas el total de horas

Otra cosa le quite como 4 referencias ya que en mi maquina no las uso, aun así la macro jala bien, solo copiala a tu proyecto por que la neta ni me fije que quite XD

Saludos y espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por Marcos José (22 intervenciones) el 25/01/2020 00:18:37
Hola Miguel gracias por tu ayuda va genial y gracias por los consejos que voy a aplicar enseguida.
Queria pedirte otro favor, los datos de la hoja, Tabla_Horas_Trabajadas, los recoge del UserRegistroHoras, como seria posible limpiar los datos de ese userform cada dia al terminar la jornada laboral.

Repito muchisimas gracias por tu ayuda ya que estaba estancado
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 MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por MIGUEL (121 intervenciones) el 25/01/2020 02:07:14
Pues es exactamente lo que hace la macro.

La ultima linea en la macro borra todo lo que este en la hoja Tabla_Horas_Trabajadas después de pasar los datos al resumen.

Si quieres realizar la operación al cerrar el libro pues llama la macro desde Workbook_BeforeClose y guarda antes de cerrar el libro, al otro dia cuando abras el libro estará limpia la hoja y solo tendrás que seguir capturando lo del día en curso.

De igual forma si llamas la macro desde Workbook_Open al abrir el libro realiza la operación y cuando llames al UserRegistroHoras estará en blanco y solo tendrás que seguir capturando lo del día en curso.

Si agregas un boton a tu userfor UserRegistroHoras solo para testear y al dar click llamas la macro veras en tiempo de ejecución como se limpia el form

Saludos
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: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por Marcos José (22 intervenciones) el 25/01/2020 13:30:39
Muchísimas gracias por todo se me olvidó preguntarte en que parte de la macro le puedo decir que me coja también la fecha
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 MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por MIGUEL (121 intervenciones) el 27/01/2020 16:35:47
Buenas Marcos
Tendras que modificar todos los casos, te dejo anotaciones de en que parte debes modificar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
If Sheets("Tabla_Horas_Trabajadas").Range("B" & f) = Sheets("Resumen_Semanal").Range("A" & g) Then
            Sheets("Resumen_Semanal").Range("C" & g) = Sheets("Tabla_Horas_Trabajadas").Range("F" & f)
            Sheets("Resumen_Semanal").Range("D" & g) = Sheets("Tabla_Horas_Trabajadas").Range("G" & f)
            Sheets("Resumen_Semanal").Range("E" & g) = Sheets("Resumen_Semanal").Range("D" & g) - Sheets("Resumen_Semanal").Range("C" & g)
            'En esta parte le indicas que ponga la fecha
            existe = 1
            Exit For
        Else
            existe = 0
        End If
    Next g
    If existe = 0 Then
        Sheets("Resumen_Semanal").Range("A" & ultfila + 1) = Sheets("Tabla_Horas_Trabajadas").Range("B" & f)
        Sheets("Resumen_Semanal").Range("B" & ultfila + 1) = Sheets("Tabla_Horas_Trabajadas").Range("C" & f)
        Sheets("Resumen_Semanal").Range("C" & ultfila + 1) = Sheets("Tabla_Horas_Trabajadas").Range("F" & f)
        Sheets("Resumen_Semanal").Range("D" & ultfila + 1) = Sheets("Tabla_Horas_Trabajadas").Range("G" & f)
        Sheets("Resumen_Semanal").Range("E" & ultfila + 1) = Sheets("Resumen_Semanal").Range("D" & ultfila + 1) - Sheets("Resumen_Semanal").Range("C" & ultfila + 1)
        'En esta parte tambien le tienes que indicar la fecha
    End If
Next f

Saludos
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: 44
Ha disminuido su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Ayuda con MACRO por facor

Publicado por Marcos José (22 intervenciones) el 25/01/2020 20:00:54
Me equivoqué al puntuar te pido disculpas
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