Desarrollar macro para automatizar archivo

As):

Tengo la siguiente consulta para ver si es factible desarrollar en macro o formulas.

Actualmente tengo un archivo que se ha creado en formulas de búsqueda y referencia pero está incompleto para lo que se requiere.

Explico la función de este reporte:

Primero

  • Tengo una base de datos donde registro lo que se muestra en la foto.
  • Lo resaltado en amarillo es una serie que servirá para la búsqueda de los demás datos.

Segundo

  • En mi hoja control, cuando escanee físicamente la serie de un producto en la celada G6, se llenen los campos vacíos, esta información debe extraerse de la hoja B.D. (Eso tengo formulas de búsqueda y referencia)

Pero el tema es que no se como hacer para que me aparezcan las horas en automático al escanear el producto en la celda G6. Es decir, si el usuario ingresa su equipo al almacén el día 02/04 a las 17:47 se le escanea la serie, al momento de escanear se debe registrar la fecha y hora de la acción en el reporte. Quizás todo se pueda llevar con formulas y no macro. Pero estos datos deben aparecer en automático al escanear en la celda g6.

Espero se comprenda la idea, caso contrario pueda enviar mi archivo.

Asimismo, aún pienso en como registrar la hora de salida, quizás una condición que si el escaneo de una serie es mayor a 2 debe registrar hora de salida.

Respuesta
1

Podrías usar algo así:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("G:G")) Is Nothing Then
       If Target.Count > 1 Then Exit Sub
        Set i = Sheets("B.D.")
        Set a = i.Columns("C").Find(Target.Value, LookAt:=xlWhole)
        If Not a Is Nothing Then
            Range("A" & Target.Row) = Date
            Range("B" & Target.Row) = Format(Now, "hh:mm")
            Cells(Target.Row, "D").Value = i.Cells(a.Row, "B")
            Cells(Target.Row, "E").Value = i.Cells(a.Row, "A")
            Cells(Target.Row, "F").Value = i.Cells(a.Row, "D")
            Cells(Target.Row, "H").Value = i.Cells(a.Row, "E")
        End If
    End If
Application.ScreenUpdating = True
End Sub

Estimado:

La idea está genial, solo una consulta adicional para poder cerrar el ejemplo, la hora aparece solo al posicionarme en la celda activa de la columna G y se va mostrando apenas cambie la celda activa con el cursor.

Será posible que esta acción solo la realice al aparecer el dato en la celda G6? Lo que pasa es que en esa celda escaneamos la serie de un producto con el escaner inalámbrico y se muestra el dato, con esa acción ver si es factible que se muestre la hora....

Quedo atento a tu sugerencias.

Supongo que quieres esto

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("G:G")) Is Nothing Then
       If Target.Count > 1 Then Exit Sub
        Set i = Sheets("B.D.")
        Set a = i.Columns("C").Find(Target.Value, LookAt:=xlWhole)
        If Not a Is Nothing Then
            Range("A" & Target.Row) = Date
            Range("B" & Target.Row) = Format(Now, "hh:mm")
            Cells(Target.Row, "D").Value = i.Cells(a.Row, "B")
            Cells(Target.Row, "E").Value = i.Cells(a.Row, "A")
            Cells(Target.Row, "F").Value = i.Cells(a.Row, "D")
            Cells(Target.Row, "H").Value = i.Cells(a.Row, "E")
            If a = "" Then
            Range("A" & Target.Row) = ""
            Range("B" & Target.Row) = ""
            End If
            End If
        End If
Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas