Rellenar 3 textbox con búsqueda de palabra

En una hoja Excel llamada Base tengo datos variables en las columnas A, B, C.

Por otro lado tengo un UserForm1 que contiene un ListBox1 que me muestra los datos de las columnas A, B y C.

Tengo además un Textbox1 con la siguiente orden, que me filtra y busca la letra o palabra que le pongo.

Private Sub TextBox1_Change()

'activamos la hoja base

Sheets("base"). Activate

'nos posicionamos en la celda a1

Sheets("base").Range("a1").Select

'limpiamos el listbox

ListBox1.RowSource = Empty

'limpiamos la hoja3 donde se genera el filtro avanzado

Sheets("hoja3").Range("A:c"). ClearContents

'limpiamos los campos de busqueda del filtro avanzado

Sheets("base"). Range("E2:G2"). ClearContents

'le damos el ancho a las 3 columnas del listbox

ListBox1.ColumnWidths = "40;100;60"

'en la celda e2 se transfiere lo que se escribe en el textbox1 en este caso el codigo

'los asteriscos entre comillas son para que busque por cualquier letra que se ingrese

'y los signos & son para unir el asterisco con el valor del textbox

Sheets("base").Range("E2") = "*" & TextBox1 & "*"

'aqui realizamos el filtro avanzado

Range("a1:c1000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _

"E1:E2"), copytorange:=Sheets("hoja3").Range("a1"), Unique:=False

'mostramos el resultado del filtro avanzado en el textbox

ListBox1.RowSource = "hoja3!a2:c1000"

End Sub

Lo que necesito es que al tener 3 columnas, situándome en el 1º textbox pueda buscar un dato de la columna A por ejemplo pongo la letra “m” y seleccione una fila que pone “campo”.

Después pase al textbox 2 y vuelva a salir todo los datos de la columna B y elija, e igualmente con la columna C en el textbox3

Una vez fijados los tres textos en sus respectivos textbox, por medio de un botón los fije en la hoja2 columna A, B, C a modo de HISTORICO.

1 respuesta

Respuesta
3

H o l a:

Te anexo el código para filtrar las columnas A, B y C

También te anexo el código para un botón par almacenar los textbox en la hoja2

Private Sub CommandButton1_Click()
'Por.Dante Amor
    'Histórico
    Set h = Sheets("Hoja2")
    u1 = h.Range("A" & Rows.Count).End(xlUp).Row + 1
    u2 = h.Range("B" & Rows.Count).End(xlUp).Row + 1
    u3 = h.Range("C" & Rows.Count).End(xlUp).Row + 1
    u = WorksheetFunction.Max(u1, u2, u3)
    h.Cells(u, "A") = TextBox1
    h.Cells(u, "B") = TextBox2
    h.Cells(u, "C") = TextBox3
    MsgBox "Datos guardados"
End Sub
'
Private Sub TextBox1_Change()
    Call Filtrar(TextBox1.Value, "E")
End Sub
'
Private Sub TextBox2_Change()
    Call Filtrar(TextBox2.Value, "F")
End Sub
'
Private Sub TextBox3_Change()
    Call Filtrar(TextBox3.Value, "G")
End Sub
'
Sub Filtrar(wtext, col)
'Act.Por.Dante Amor
    Sheets("base").Activate
    ListBox1.RowSource = Empty
    Sheets("hoja3").Range("A:C").ClearContents
    Sheets("base").Range("E2:G2").ClearContents
    ListBox1.ColumnWidths = "40;100;60"
    Sheets("base").Range(col & "2") = "*" & wtext & "*"
    Range("A1:C1000").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(col & "1:" & col & "2"), _
        copytorange:=Sheets("hoja3").Range("A1"), Unique:=False
    ListBox1.RowSource = "hoja3!A2:C1000"
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas