Como hacer que un listbox muestre una busqueda filtrada?

22/04/2006 - 01:20 por JM | Informe spam
Hola a todos.
Me explico con el enunciado.
Tengo una hoja excel que contiene una relacion de libros.
He creado un formulario VBA que contiene una serie de campos
1. un listbox que muestra el listado completo de publicaciones que hay en la
hoja,
con un bucle recorre las lineas y copia en el todas las publicaciones.
2. una serie de campos de texto que me muestran los detalles de la publicacion
(libro) que yo selecciono en el listbox al hacer click en el. (detalles
como año,
publicacion, tema, etc.)

LO que quiero conseguir y no me salgo es:
1. añadir un boton de busqueda que muestre un mensaje de "Libro a Buscar"
(esto ya lo tengo y el resultado lo almaceno en una variable)
2. me filtre la hoja excel y solo muestre ese libro/publicacion, o todos los
libros que
contengan la palabra introducida en el inputbox por el usuario.
3. en el listbox me aparezcan tambien solo esos mismos libros que en la hoja
ya estan filtrados y que ademas si tengo que realizar una modificacion
sobre
ellos, lo cual hago desde el formulario, realmente lo aplique a el libro
que
he seleccionado.


Muchas gracias de antemano a todos.
 

Leer las respuestas

#1 JM
22/04/2006 - 08:54 | Informe spam
El codigo que tengo y que actualmente me falla a la hora de mostrar los
resultados en el listbox es el siguiente:

Private Sub buscarYMostrar()
'Realizaremos una busqueda de publicacion y haremos que solo muestre esas
publicaciones
'en el listado de publicaciones
'//

Dim rng As Range
Dim linea As Range
Dim txtABuscar As String ' esta es la variable que almacena el inputbox
Dim txtAbuscar2 As Variant 'esta la utilizo para que al inputbox se le añada
' cualquier palabra delante o detras.

'con lo de abajo pide el nombre y filtra la hoja, y lo hace correctamente.

txtABuscar = Application.InputBox("Introduce el Nombre de la Publicación que
quieres buscar (o PARTE de él)")
txtAbuscar2 = "*" & txtABuscar & "*"
Range("C2").Select
Selection.AutoFilter Field:=3, Criteria1:="*" & txtABuscar & "*"

'a partir de aqui es para que muestre los resultados en el formulario
'
With ThisWorkbook.Worksheets("Publicaciones")
.Activate
Set rng = .Range("A1").CurrentRegion
Set rng = .Range("A2:K" & rng.Rows.Count + 3)
lstPublicaciones.Clear
For Each linea In rng.Rows
If Cells(linea.Row, 3) <> "" Then

'si elimino este if y dejo la instruccion solo debajo del
anterior if funciona
'a medias ya que me muestra el listado completo, no el filtrado.
'si pongo este if, no funciona, no muestra nada.

If Cells(linea.Row, 3) = txtAbuscar2 Then
lstPublicaciones.AddItem Cells(linea.Row, 1) & " " &
Cells(linea.Row, 3) & " ( " & Cells(linea.Row, 4) & " )"

End If

Else
Exit For
End If


Next linea
End With

End Sub




"JM" escribió:

Hola a todos.
Me explico con el enunciado.
Tengo una hoja excel que contiene una relacion de libros.
He creado un formulario VBA que contiene una serie de campos
1. un listbox que muestra el listado completo de publicaciones que hay en la
hoja,
con un bucle recorre las lineas y copia en el todas las publicaciones.
2. una serie de campos de texto que me muestran los detalles de la publicacion
(libro) que yo selecciono en el listbox al hacer click en el. (detalles
como año,
publicacion, tema, etc.)

LO que quiero conseguir y no me salgo es:
1. añadir un boton de busqueda que muestre un mensaje de "Libro a Buscar"
(esto ya lo tengo y el resultado lo almaceno en una variable)
2. me filtre la hoja excel y solo muestre ese libro/publicacion, o todos los
libros que
contengan la palabra introducida en el inputbox por el usuario.
3. en el listbox me aparezcan tambien solo esos mismos libros que en la hoja
ya estan filtrados y que ademas si tengo que realizar una modificacion
sobre
ellos, lo cual hago desde el formulario, realmente lo aplique a el libro
que
he seleccionado.


Muchas gracias de antemano a todos.

Preguntas similares