Detectar tipo de movimiento y registrarlo según sea el caso, en Planilla Excel, mediante el uso de Un TextBox..

Requiero de sus valiosos aportes a fin de terminar esta pequeña planilla.

Mediante el ingreso de un Código que puede Ser AlfaNumérico, detectar, si el Nombre ya está en la Planilla y copiar en la respectiva Columna "Entrada" o "Salida", la fecha y hora cuando se de Click en el Boton "Procesar".

La Base de Datos con los nombres, esta en otra Hoja:

Esta seria la hoja donde estan todos los bombres de los empleados y en la Hoja llamada "Registro", es donde mediante el uso del Formulario con el TextBox y el CommandButton, vamos a registrar la fecha y la hora de los movimientos.

1 respuesta

Respuesta
1

Te anexo la macro, supongo que si no encuentra el código en la hoja "registro" se tiene que poner la fecha en entrada y si lo encuentra, entonces se tiene que poner la fecha en salida.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("BasedeDatos")
    Set b = h2.Range("C:C").Find(Val(TextBox1), lookat:=xlWhole)
    If Not b Is Nothing Then
        nom = h2.Cells(b.Row, "B")
        Set c = h1.Range("B:B").Find(nom, lookat:=xlWhole)
        If c Is Nothing Then
            wmax = Application.Max(h1.Columns("A")) + 1
            u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Cells(u, "A") = wmax
            h1.Cells(u, "B") = nom
            h1.Cells(u, "C") = Val(TextBox1)
            h1.Cells(u, "D") = Date & " " & Time
        Else
            h1.Cells(c.Row, "E") = Date & " " & Time
        End If
    Else
        MsgBox "El código no existe"
    End If
End Sub

Hola Dante, muchas gracias por la macro, funciona muy.

Hay 2 cositas que necesito, es posible que la persona que tenga el Código 4277, entre y salga varias veces a una habitación, por eso, en la planilla, debe quedar el registro de la hora en que entró y la hora en que salió, cada vez que lo haga, es decir, yo puedo entrar al cuarto hasta 5 o más veces al día y cada vez que entre y salga, debe quedar registro de la hora en que entré y la hora en que salí, así sucesivamente, con todas las veces que entre y salga. No importa si el nombre y el código se repite en la planilla, así es que lo necesito.

Y lo otro, es que el Código, ùede tener también letras, por ejemplo CDA754 y necesito que me lo reconozca.

Muchas gracias por la macro que me enviaste. Ojala tengas un tiempito más para ver si es posible hacerle estas modificaciones o implementaciones.

Entonces, si se registra una vez, ¿es la entrada?

Si se registra por segunda vez, ¿es la salida de la primera entrada?

Si se registra por tercera vez, es una nueva entrada, es decir, ¿es la segunda entrada?

Si se registra por cuarta vez, ¿es la salida de la segunda entrada?

Si es así, podrías crear una nueva pregunta, el cambio es considerable, ya que la macro tiene que buscar si el código existe varias veces.

Si no es numérico el código entonces la macro quedaría así:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("BasedeDatos")
    Set b = h2.Range("C:C").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        nom = h2.Cells(b.Row, "B")
        Set c = h1.Range("B:B").Find(nom, lookat:=xlWhole)
        If c Is Nothing Then
            wmax = Application.Max(h1.Columns("A")) + 1
            u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Cells(u, "A") = wmax
            h1.Cells(u, "B") = nom
            h1.Cells(u, "C") = TextBox1
            h1.Cells(u, "D") = Date & " " & Time
        Else
            If Cells(c.Row, "E") = "" Then
                h1.Cells(c.Row, "E") = Date & " " & Time
            Else
                wmax = Application.Max(h1.Columns("A")) + 1
                u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
                h1.Cells(u, "A") = wmax
                h1.Cells(u, "B") = nom
                h1.Cells(u, "C") = TextBox1
                h1.Cells(u, "D") = Date & " " & Time
            End If
        End If
    Else
        MsgBox "El código no existe"
    End If
End Sub

Perdona, prueba con esta macro para que el campo sea con letras

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("BasedeDatos")
    Set b = h2.Range("C:C").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        nom = h2.Cells(b.Row, "B")
        Set c = h1.Range("B:B").Find(nom, lookat:=xlWhole)
        If c Is Nothing Then
            wmax = Application.Max(h1.Columns("A")) + 1
            u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Cells(u, "A") = wmax
            h1.Cells(u, "B") = nom
            h1.Cells(u, "C") = TextBox1
            h1.Cells(u, "D") = Date & " " & Time
        Else
            h1.Cells(c.Row, "E") = Date & " " & Time
        End If
    Else
        MsgBox "El código no existe"
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas