Jump to content
Sign in to follow this  
MisterHP

[SOLUCIONADO]Filtro automatico en listbox con busqueda de palabras

Recommended Posts

Hola a todos, estoy adelantando un archivo con el que estoy trabajando en el que estoy necesitando una ayuda para dos userform.

El caso es el siguiente, tengo un userform2 donde tengo varios combobox y texbox, pero pasa lo siguiente a veces resulta un poco incodo en todos los datos que tengo saber cual es el codigo correspondiente que voy a usar en el combobox, para lo cual he creado un userform que al posicionarme en el combobox y presionar un boton agregar aparezca el userform1 y alli tengo un listbox donde estarian todos los codigos y sus datos correspondiente lo que deseo es que por medio de un comodin o introducciendo la palabra a buscar aparezcan los datos que concuerden y luego de seleccionar el correcto este dato pase al combobox que haya seleccionado previo a agregar el dato.

Subo un archivo en el cual aclaro lo que necesito.

Gracias,

prueba.zip

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas revisa el siguiente post https://www.ayudaexcel.com/foro/showthread.php?t=12688

haber si pudes acomodar el codigo

un saludo

Gracias pero ya habia visto ese archivo pero tiene muchas funciones que no necesito y practicamente lo que necesito es que cuando haga la seleccion estos una de las columnas pase al combobox y que por supuesto el listbox se llene con todos los datos pero que pueda realizar busquedas por palabra o cargando la palabra vaya filtrandose.

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas MisterHp coloca el siguiente codigo en un textbox1

Private Sub TextBox1_Change()

Dim hj As Worksheet

Dim C As Range, FirstCell As String

Dim busque

Application.ScreenUpdating = False

busque = TextBox1.Value

If TextBox1.Value = Empty Then

ListBox1.Clear

Exit Sub

Else

ListBox1.Clear

Set C = Sheets("Hoja1").Range("A1:A" & Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row).Find(What:=busque, LookIn:=xlValues, LookAt:=xlPart)

If C Is Nothing Then GoTo ProximaHoja

FirstCell = C.Address

Do

With ListBox1

.ColumnCount = 2

.ColumnWidths = "30;200"

.AddItem ListBox2.ListCount + 1

.Column(1, ListBox2.ListCount - 1) = C.Value

End With

Set C = Sheets("Hoja1").Range("A1:A" & Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row).FindNext©

Loop Until FirstCell = C.Address

ProximaHoja:

Set hj = Nothing

Set C = Nothing

End If

Application.ScreenUpdating = True

End Sub

teniendo los datos a buscar en la Hoja1 en la columna A

un saludo

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas MisterHp coloca el siguiente codigo en un textbox1

Private Sub TextBox1_Change()

Dim hj As Worksheet

Dim C As Range, FirstCell As String

Dim busque

Application.ScreenUpdating = False

busque = TextBox1.Value

If TextBox1.Value = Empty Then

ListBox1.Clear

Exit Sub

Else

ListBox1.Clear

Set C = Sheets("Hoja1").Range("A1:A" & Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row).Find(What:=busque, LookIn:=xlValues, LookAt:=xlPart)

If C Is Nothing Then GoTo ProximaHoja

FirstCell = C.Address

Do

With ListBox1

.ColumnCount = 2

.ColumnWidths = "30;200"

.AddItem ListBox2.ListCount + 1

.Column(1, ListBox2.ListCount - 1) = C.Value

End With

Set C = Sheets("Hoja1").Range("A1:A" & Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row).FindNext©

Loop Until FirstCell = C.Address

ProximaHoja:

Set hj = Nothing

Set C = Nothing

End If

Application.ScreenUpdating = True

End Sub

teniendo los datos a buscar en la Hoja1 en la columna A

un saludo

Ok ya probe aunque tuve que cambiar listbox2 por listbox1, pero bien el caso es que lo que quiero que se busque esta en la columna b pero a la vez quiero que traiga lo de la columna a, es decir que la palabra que va a buscar sera la columna B la que yo introduciria como palabra, pero veria tambien el codigo que corresponde a esa palabra segun la columna A

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Hice este pequeño cambio y va bien, pero quisiera que al cargar el userform se muestren todos, y que solo al colocar la palabra que deseo es que se vayan filtrando

Private Sub TextBox1_Change()

Dim hj As Worksheet

Dim C As Range, FirstCell As String

Dim busque

Application.ScreenUpdating = False

busque = TextBox1.Value

If TextBox1.Value = Empty Then

ListBox1.Clear

Exit Sub

Else

ListBox1.Clear

Set C = Sheets("Hoja1").Range("b1:B" & Sheets("Hoja1").Range("b" & Rows.Count).End(xlUp).Row).Find(What:=busque, LookIn:=xlValues, LookAt:=xlPart)

If C Is Nothing Then GoTo ProximaHoja

FirstCell = C.Address

Do

With ListBox1

.ColumnCount = 2

.ColumnWidths = "30;120;250"

.AddItem ListBox1.ListCount + 1

.Column(1, ListBox1.ListCount - 1) = C.Value

End With

Set C = Sheets("Hoja1").Range("b1:B" & Sheets("Hoja1").Range("b" & Rows.Count).End(xlUp).Row).FindNext©

Loop Until FirstCell = C.Address

ProximaHoja:

Set hj = Nothing

Set C = Nothing

End If

Application.ScreenUpdating = True

End Sub

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

bien cambia lo siguiente

With ListBox1

.ColumnCount = 2

.ColumnWidths = "30;200"

.AddItem ListBox2.ListCount + 1

.Column(1, ListBox2.ListCount - 1) = C.Value

End With

por

With ListBox1

.ColumnCount = 3

.ColumnWidths = "30;200;200"

.AddItem ListBox2.ListCount + 1

.Column(1, ListBox2.ListCount - 1) = C.Value

.Column(2, ListBox2.ListCount - 1) = C.Offset(0,-1).Value

End With

un saludo

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

buenas coloca lo siguiente

Private Sub ListBox1_Click()

Userform1.Textbox1.Value=Userform2.ListBox1.Column(2,Userform2.ListBox1.ListIndex).Value

Userform2.Hide

End Sub

siendo el userform1 el formulario destino y userform2 el formulario que posee el listbox para la busqueda

un saludo

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas revisa archivo para ver si te es de utilidad

un saludo

Se esta acercando a lo que busco, solo note que pregunta en donde deseo colocar lo que escojo y de paso seria un poco tedioso estar seleccionando siempre; ya que son varios combobox y textbox habria que aprenderse el numero para saber cual seria la posicion donde se va a colocar, si pudiera alguna forma de mejorar esta parte y el dato que solo necesito que se obtenga es para el combobox no para los texbobox y que los textbox se traerian solo con solo obtener el numero que se copiaria del listbox.

En este tema hace unos dias me ofrecieron ayuda era algo casi parecido pero distinto, se podia traer el valor desde otro userform al otro. https://www.ayudaexcel.com/foro/showthread.php?t=12496

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas revisa despues de colocar el dato a buscar y antes seleccionar el dato deseado se debe de colocar el cursor en userform2 en el combobox que se desee colocar el dato y luego seleccionarlo

un saludo

prueba.zip

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Buenas revisa despues de colocar el dato a buscar y antes seleccionar el dato deseado se debe de colocar el cursor en userform2 en el combobox que se desee colocar el dato y luego seleccionarlo

un saludo

Ok voy a checar y te muestro tambien este tema https://www.ayudaexcel.com/foro/showthread.php?t=12496 en el que recibi ayuda en algo parecido pero no con listbox. Ese hace algo parecido que evitaria estar seleccionando primero el userform y el combox antes de elegir ya que lanza un error sino se hace ese paso.

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Bien pues hay tienes otra forma más de enlazar los datos entre dos formularios,ahora es cosa tuya el seleccionar a que mejor se ajuste a tu proyecto

un saludo

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Bien pues hay tienes otra forma más de enlazar los datos entre dos formularios,ahora es cosa tuya el seleccionar a que mejor se ajuste a tu proyecto

un saludo

Ok el archivo con el que me ayudaste funciona bien, si solo se agregara un codigo para obligar a que se seleccione primero el combobox todo iria bien asi se evita el error que lanza sino se escoje, creo que con esa parte quedaria bien, y en caso de que no se escoja pues no pase nada ya que abran ocasiones que puede que no se escoja nada y se presione salir.

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

bien cambia en el userform1 el codigo

Private Sub ListBox1_Click()

Dim x As String

x = UserForm2.ActiveControl.Name

UserForm2.Controls(x).AddItem UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm2.Controls(x).Value = UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm1.Hide

End Sub

por

Private Sub ListBox1_Click()

Dim x As String

If UserForm2.ActiveControl.Name = "CommandButton1" Then

MsgBox "Recuerde que debe de seleccionar el lugar donde colocare los datso", , "INFROMACIÓN DE LA APLICACIÓN"

Exit Sub

Else

x = UserForm2.ActiveControl.Name

UserForm2.Controls(x).AddItem UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm2.Controls(x).Value = UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm1.Hide

End If

End Sub

de todas formas una pregunta que puede ser tonta el por que de usar 2 userform cuando lo puedes simplificar usando uno solo?

un saludo

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

bien cambia en el userform1 el codigo

Private Sub ListBox1_Click()

Dim x As String

x = UserForm2.ActiveControl.Name

UserForm2.Controls(x).AddItem UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm2.Controls(x).Value = UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm1.Hide

End Sub

por

Private Sub ListBox1_Click()

Dim x As String

If UserForm2.ActiveControl.Name = "CommandButton1" Then

MsgBox "Recuerde que debe de seleccionar el lugar donde colocare los datso", , "INFROMACIÓN DE LA APLICACIÓN"

Exit Sub

Else

x = UserForm2.ActiveControl.Name

UserForm2.Controls(x).AddItem UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm2.Controls(x).Value = UserForm1.ListBox1.Column(2, UserForm1.ListBox1.ListIndex)

UserForm1.Hide

End If

End Sub

de todas formas una pregunta que puede ser tonta el por que de usar 2 userform cuando lo puedes simplificar usando uno solo?

un saludo

Ok, lo que pasa es que como tendre varios combobox con texbox dependientes, el userform con el listbox solo sera para cuando necesites buscar una palabra que no sepa cual es el codigo asociado a ella, de manera que buscandola pueda traer su codigo, ya que habra todo un listado de codigos y palabras y la forma mas rapida es buscandola asi.

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Si pero no te hace falta crear un userform para ello si te das cuenta en el post 11 en el userform1 solo hay un listbox creado pero despues de rellenar el textbox1 aparece un listbox mas algo asi se puede hacer en tu userfomr principal sin necesidad de crear un userfom adicional pero bueno eso es agusto del consumidor

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Si pero no te hace falta crear un userform para ello si te das cuenta en el post 11 en el userform1 solo hay un listbox creado pero despues de rellenar el textbox1 aparece un listbox mas algo asi se puede hacer en tu userfomr principal sin necesidad de crear un userfom adicional pero bueno eso es agusto del consumidor

Ok pero no entiendo como se podria hacer en el mismo userform donde estan los combobox que muestre un listbox y a la vez lo que necesito porque en el archivo que mencionas hay dos userform, solo que tiene la diferencia de que habia que escoger donde se iba a enviar la informacion.

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Hola MisterHP:

En el userform2 los combobox se deben llenar con algo, los textbox para que es.

en el userform1. boton de comando ok que evento debe realizar.

Te adjunto un archivo

prueba.ro.zip

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Hola MisterHP:

Adaptando el codigo que ha hecho nuestro amigo logroastur te adjunto el archivo.

Escribes en cualquier combobox el codigo por ejem area luego das agregar

En el otro userform le das click en buscar.

prueba.ro.zip

Share this post


Link to post
Share on other sites

Re: Filtro automatico en listbox con busqueda de palabras

Hola MisterHP:

Adaptando el codigo que ha hecho nuestro amigo logroastur te adjunto el archivo.

Escribes en cualquier combobox el codigo por ejem area luego das agregar

En el otro userform le das click en buscar.

Hola, acabo de ver el archivo pero me sigue mostrando el mismo error, no se puede encontrar el proyecto o biblioteca, hago los pasos que mencionas pero sigue igual que el anterior, al presionar buscar

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy