Utilizar un buscador inteligente que busque en toda la tabla de excel

Tengo una tabla de excel, con varias filas y columnas, he creado un textbox para hacer una búsqueda, con programación VBA, funciona bien, pero quisiera saber si es posible que la búsqueda en vez de realizarla por una columna (en este caso apellidos) se pudiera hacer por todas las columnas, es decir, que al introducir el texto, salieran los datos que coinciden independientemente de la columna donde se encuentan.

El código que he usado es el siguiente:

Private Sub TextBox1_Change()
Dim valorbuscado As String
If Hoja1.TextBox1.Value <> "" Then
    valorbuscado = "*" & Hoja1.TextBox1.Value & "*"
    Range("A7").CurrentRegion.AutoFilter Field:=5, Criteria1:=valorbuscado
Else
    valorbuscado = ""
    Range("A7").CurrentRegion.AutoFilter
End If
End Sub

Es posible concatenar dicha búsqueda con el resto de columnas, es decir, como hago para en ese mismo cuadro de texto poner un teléfono o un apellido y que lo busque por toda la tabla y no solo por la columna apellido.

2 respuestas

Respuesta
1

... Como hago para en ese mismo cuadro de texto poner un teléfono o un apellido y que lo busque por toda la tabla...

Prueba lo siguiente:

Private Sub TextBox1_Change()
  Dim valorbuscado As String
  Dim f As Range
  '
  Application.ScreenUpdating = False
  '
  With Hoja1
    If .AutoFilterMode Then .AutoFilterMode = False
    If .TextBox1.Value <> "" Then
      Set f = .Range("A7").CurrentRegion.Find(.TextBox1.Value, , xlValues, xlPart, , , False)
      If Not f Is Nothing Then
        valorbuscado = "*" & .TextBox1.Value & "*"
        .Range("A7").CurrentRegion.AutoFilter Field:=f.Column, Criteria1:=valorbuscado
      End If
    End If
  End With
End Sub
Respuesta

no entendí tu pregunta... ¿tiene qué encontrar el valor y filtrarlo? De todos modos te dejo un código que he empleado y busca lo que coloques en el textbox y se posiciona ahí.

Sub Buscar()
'
Dim Celda As Range, Dirección As Variant
'
   texto = InputBox("Introduzca sólo el número del folio consecutivo que viene en el Sobre", "Control de Tarjetas TOKA", "Ejemplo: 390001")
'
   If texto = "" Then Exit Sub
       Set Celda = Range("A:V").Find(What:=texto, LookAt:=xlPart)
   If Not Celda Is Nothing Then
        Dirección = Celda.Address(False, False)
        Range(Dirección).Activate
    Else
      MsgBox "No se ha encontrado el texto a buscar"
   End If
'
End Sub

ojalá te sirve y no olvides puntuar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas