Detectar si un "codigo" existe en una planilla, si existe, informarlo en un Label.

Felices Fiestas..!

La Semana pasada, Dante, me hizo esta macro, que funciona a la perfección:

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

Ahora, lo que necesito, es que, mientras escribo en el TxtPlaca, vaya "detectando" las coincidencias y, si el "Código" esta en la Planilla, me escriba en un Label, que el movimiento será "SALIRÁ" y si el código no esta en la Planilla, me escriba que el movimiento será: "ENTRARÁ".

1 Respuesta

Respuesta
1

Agrega el siguiente código a tu formulario

Private Sub TxtPlaca_Change()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set b = h1.Range("C:C").Find(TxtPlaca, lookat:=xlWhole)
    If Not b Is Nothing Then
        Label1 = "SALDRÁ"
    Else
        Label1 = "ENTRARÁ"
    End If
End Sub

Hola Dante, gracias por responder, pensé que por ser fiestas de fin de año, todos estarían retirados (je je..)

Te cuento que coloqué el código en el evento, tal cual me lo indicaste, peo no logro que me funcione.

Lo he probado en otro formulario, y el código tuyo, funciona a la perfección, pero cuando lo implemento en mi formulario, no, a pesar de que los objetos existen, y el rango es el correcto. También lo ubico en el evento "Change", pero no me funciona.

Debe estar en el evento Change.

Si ya te funciona en otro formulario, revisar los nombres de los controles, TxtPlaca, Label1

Buenos días Dante, he dado con la falla que tenía (Text, en vez de Txt).

Ahora que he encontrado el error que yo tenía, comprobé que la macro, funciona perfectamente, pero me surge un inconveniente, porque, resulta que este código, no evalúa bien si se trata de una entrada o de una salida.

Recuerdas este código:

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

Tu me lo pasaste, y ahora con este codigo, lo que necesito, es que evalúe, con respectoa a la ultima entrada, si se trata de una "Entrada" o de una "Salida"; es decir; que si el código XXX, en la celda de la columna "Entrda" y en la celda de la columna "Salida", estan llenas, entonces se tratará de una nueva Entrada, pero, si la celda de la columna "Salida", está vacía, me indique que saldrá.

Lo que pasa con el código que me pasaste, todo, sean entradas o salidas, en el Label me coloca "Saldra", aunque el código vaya a entrar. No se si eso se deba a que la macro comienza a buscar desde A hacia abajo.

Quedo atento a tus recomendaciones.

Cambia la macro por esta:

Private Sub TxtPlaca_Change()
'Por.Dante Amor
    Label1 = ""
    If TxtPlaca = "" Then Exit Sub
    Set h1 = Sheets("Registro")
    Set b = h1.Range("C:C").Find(TxtPlaca, lookat:=xlWhole, SearchDirection:=xlPrevious)
    If Not b Is Nothing Then
        If h1.Cells(b.Row, "D") = "" Then
            Label1 = "ENTRARÁ"
        Else
            Label1 = "SALDRÁ"
        End If
    Else
        Label1 = "ENTRARÁ"
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas