Macro para buscar datos mediante un Formulario

Tengo un archivo Excel que utilizo como Base de Datos de mis contactos, el mismo consta de varias columnas donde ingreso los diferentes tipos de informaciones (adjunto imagen)

Lo que me gustaría es poder añadir un botón de búsqueda que abra un Formulario donde al ingresar una letra, arroje varios resultados de entre los cuales pueda elegir de cual de ellos deseo que me muestre el "Nombre" "Empresa" "Cargo" "Teléfono1" "Teléfono2".

Estuve probando con algunas formulas obtenidas de otras consultas pero no se adecuan a lo que necesito, resulta que quisiera que en mi textbox de búsqueda no sea muy rígido, es decir, quisiera que busque por coincidencias, es decir si meto la letra J que me arroje todos los nombres que empiezan con esa letra.

1 respuesta

Respuesta
2

H o l a:

Tengo una macro que realiza búsquedas utilizando un combobox de controlActivex:

¿Filtrar lista de artículos con COMBOX?

¿Solamente quieres que se filtre por nombre o cualquier dato?

Envíame tu archivo con algunos ejemplos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Victor Fretes” y el título de esta pregunta.

Hola Dante,

Acabo de enviarte el archivo, lastimosamente no he podido utilizar la fórmula del link que me adjuntaste ya que no veo como funciona en el archivo de modo a editar correctamente.

Agradezco tu respuesta y espero puedas ayudarme nuevamente.

Hola Dante,

Acabo de enviarte el archivo, lastimosamente no he podido utilizar la fórmula del link que me adjuntaste ya que no veo como funciona en el archivo de modo a editar correctamente.

Agradezco tu respuesta y espero puedas ayudarme nuevamente.

H o l a:

Te anexo el código para cargar los nombres en el combo.

No es necesario ni el textbox ni el botón, al momento de escribir en el combobox, por ejempo: lu

En automático el combo te desplegará

Jorge Luis

Luis Morales

María Luisa

Es decir, la macro busca en nombres, todos los nombres que contengan la palabra "lu".

Dim cargando
Const hoja = "Hoja1", col = "A", fila = 5
'
Private Sub ComboBox1_Change()
'Por.Dante Amor
    If cargando = True Then Exit Sub
    cargarcombo hoja, col, ComboBox1, TextBox1
    limpiar
    If ComboBox1.ListIndex > -1 Then
        Set b = Sheets(hoja).Columns(col).Find(ComboBox1, lookat:=xlWhole)
        If Not b Is Nothing Then
            TextBox1 = Sheets(hoja).Cells(b.Row, "B")
            TextBox2 = Sheets(hoja).Cells(b.Row, "C")
            TextBox3 = Sheets(hoja).Cells(b.Row, "D")
            TextBox4 = Sheets(hoja).Cells(b.Row, "E")
            TextBox5 = Sheets(hoja).Cells(b.Row, "F")
            TextBox6 = Sheets(hoja).Cells(b.Row, "G")
        End If
    End If
End Sub
'
Sub cargarcombo(hoja As String, col As String, combo As ComboBox, otrocontrol As Control)
'Por.Dante Amor
    Set h1 = Sheets(hoja)
    cargando = True
    dato = combo
    combo.Clear
    For i = fila To h1.Range(col & Rows.Count).End(xlUp).Row
        'If Left(UCase(h1.Cells(i, col)), Len(dato)) = UCase(dato) Then
        If UCase(h1.Cells(i, col)) Like "*" & UCase(dato) & "*" Then
            combo.AddItem h1.Cells(i, col)
            j = j + 1
        End If
    Next
    combo = dato
    '
    'En esta parte se activa la lista
    Otrocontrol. SetFocus
    Combo. SetFocus
    Combo. DropDown
    cargando = False
End Sub
'
Sub limpiar()
'Por.Dante Amor
    TextBox1 = "": TextBox2 = "": TextBox3 = ""
    TextBox4 = "": TextBox5 = "": TextBox6 = ""
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    ComboBox1.MatchEntry = 2
    Set h1 = Sheets(hoja)
    cargando = True
    For i = fila To h1.Range(col & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h1.Cells(i, col)
    Next
    ComboBox1.SetFocus
    cargando = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas