Dejar registro en una Planilla de Excel si una persona autorizada, entra a un cuarto, y dejar registro de la respectiva Salida.

Dante Amor, me ayudó con esta macro, que funciona a la perfección, pero necesito que haga otra cosa mas:

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 IfEnd Sub

Necesito lograr lo siguiente:

Dejar registro en la planilla de Todas las entradas que haga una persona, la cual digita un código para registrarse en la planilla, tanto al entrar, como al salir.

Eso lo debe hacer y debe quedar registrado en la planilla, cuantas veces entre y obviamente, salga. En Palabras de Dante Amor:

"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.""

La macro debe buscar si el código existe varias veces.

1 Respuesta

Respuesta
1

Te anexo la macro, pensé que tenía que hacer varias búsquedas, pero me acordé de la propiedad searchdirection.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("BasedeDatos")
    Set b = h2.Columns("C").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        nom = h2.Cells(b.Row, "B")
        Set c = h1.Columns("C").Find(TextBox1, lookat:=xlWhole)
        If c Is Nothing Then
            agregar h1, nom
        Else
            Set b = h1.Columns("C").Find(TextBox1, lookat:=xlWhole, SearchDirection:=xlPrevious)
            If h1.Cells(b.Row, "E") = "" Then
                h1.Cells(b.Row, "E") = Date & " " & Time
            Else
                agregar h1, nom
            End If
        End If
    Else
        MsgBox "El código no existe"
    End If
End Sub

Hola Dante, copié y peqgué la macro en el botón, pero cuando la ejecuto y le doy Click, me sale este error y me resalta la palabra "agregar", y me muestra este mensaje:

¿Qué puedo estar haciendo mal?.

He mirado la planilla, y creo, no se, que de pronto seria más fácil, si en vez de dos columnas cuyo encabezado sea "Entrada" y "Salida", mejor se cambien por esto: "Acción" y "Fecha", de esta manera, en la columna "Acción", se escribiría "Entró" o "Salió", dependiendo y en la columna "Fecha", se registre la fecha y la hora en que esto sucedió.

También quisiera que la fecha fuera en este Formato DD/MM/YYY (HH:MM)

Perdona me faltó una macro, esta va completa

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

El formato se lo puedes poner directamente en la columna

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas