H o l a: Te anexo las 2 macros, sigue las instrucciones.
Macro para actualizar la hoja "OTProceso". Lo que hace es leer todos los registros de la hoja "ListadoOT", busca la OT en la hoja "OTProceso", si no la encuentra entonces agrega el registro. De esa forma puedes agregar varias OT en la hoja y después ejecutar la macro para que te actualice la hoja "OTProceso".
Sub PasarOTProceso()
'Por.Dante Amor
Set h1 = Sheets("ListadoOT")
Set h2 = Sheets("OTProceso")
'
u1 = h1.Range("B" & Rows.Count).End(xlUp).Row
Application.EnableEvents = False
For i = 3 To u1
If h1.Cells(i, "B") = "EN PROCESO" Then
ot = h1.Cells(i, "D")
Set b = h2.Columns("D").Find(ot, lookat:=xlWhole)
If b Is Nothing Then
u2 = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
h1.Rows(i).Copy h2.Rows(u2)
End If
End If
Next
Application.EnableEvents = True
MsgBox "Hoja OT en Proceso actualizada", vbInformation
End Sub
Sigue las Instrucciones para un botón y ejecutar la macro
- Abre tu libro de Excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- En el menú elige Insertar / Módulo
- En el panel del lado derecho copia la macro
- Ahora para crear un botón, puedes hacer lo siguiente:
- Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
- Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
- Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
- Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: PasarOTProceso
- Aceptar.
- Para ejecutarla dale click a la imagen.
Ahora, para actualizar la hoja "ListadoOT", pon la siguiente macro en los eventos de la hoja "OTProceso". Funciona de la siguiente manera, cada vez que modifiques el Estado, la macro revisa si escribiste el estado "FINALIZADO", si es así, cambia el Estado en la hoja "ListadoOT" y borra el registro de "OTProceso".
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Columns("B")) Is Nothing Then
If Target.Value = "FINALIZADO" Then
Application.EnableEvents = False
Set h = Sheets("ListadoOT")
ot = h.Cells(Target.Row, "D")
Set b = h.Columns("D").Find(ot, lookat:=xlWhole)
If Not b Is Nothing Then
h.Cells(b.Row, "B") = "FINALIZADO"
Rows(Target.Row).Delete
MsgBox "Estatus actualizado", vbInformation
End If
Application.EnableEvents = True
End If
End If
End Sub
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(OTProceso)
- En el panel del lado derecho copia la macro
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias