Búsqueda en excel con VB

Buenas noches!

He creado un ListBox en el que se vuelcan los datos de una hoja de excel (BBDD) y mediante dos CommandButton puedo o bien editar la fila seleccionada abriendo un form o eliminarla.

La cuestión es que me gustaría poder hacer una búsqueda en el listbox por dirección (columna d) o por nombre (columba b) ya que son muchos registros, pero no tengo manera de conseguirlo por mas ejemplos o tutoriales que veo.

El form que utilizo para el listBox es el siguiente:

Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "EXCELeINFO"
Else
Modificar.Show
End If
End Sub
Private Sub CommandButton3_Click()
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta <> vbNo Then
Fila = Me.ListBox1.ListIndex + 2
Rows(Fila).Delete
Application.ScreenUpdating = True
End If
End Sub
Private Sub CommandButton4_Click()
End Sub
Private Sub UserForm_initialize()
With ListBox1
.ColumnCount = 6
.ColumnWidths = "45 pt;45 pt"
.ColumnHeads = True
End With
ListBox1.RowSource = "Tabla1"
End Sub
Private Sub ListBox1_Click()
Fila = Me.ListBox1.ListIndex + 2
For i = 1 To 17
Cells(Fila, 1).Activate
Next i
End Sub

Agradecería si pudierais ayudarme u orientarme.

Muchas gracias,

Un saludo.

1 Respuesta

Respuesta
1

Yo creo que la manera más sencilla es hacer al revés... buscar en Excel y apuntar en el LIstBox (obviamente que si lo presentas bien esto no se notará)

Para caminar en la columna B de tu tabla de datos fuentes

Private Sub CommandButton4_Click()

columna = 2

valorbusq = InputBox("Introduzca el nombre a buscar")
filas = Range("Tabla1").Rows.Count
filaencontrada = 0
For i = 1 To filas
valor = Range("Tabla1").Cells(i, columna)
If Not (IsError(Application.Search(valorbusq, valor, 1))) Then
filaencontrada = i
End If
Next i
Me.ListBox1.ListIndex = filaencontrada - 1
End Sub

Aunque la "búsqueda tradicional" debería usar valorbusq=valorbusq yo te propongo

El Not (IsError(Application. Search(valorbusq, valor, 1))) para que puedas usar caracteres comodines (* ¿y?)

Puedes adaptar tu codigo a otro formulario en el que puedes hasta seleccionar en que columna buscar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas