¿Cómo hacer este bucle sencillo correctamente?
Estoy aprendiendo a programar en VBA, y estoy realizando mis primero bucles, ahora bien, tengo un formulario, el cual contiene una textbox "TexBox1" y una listbox "lb_clientes" tiene 3 columnas.
En el siguiente código cuando inizializo el formulario, cargo a la listbox los datos de la tabla "logros".
Private Sub UserForm_Initialize() Me.Caption = "Buscar Cliente" Me.lb_clientes.ColumnCount = 3 'Me.lb_clientes.ColumnHeads = True Me.lb_clientes.ColumnWidths = "50;170;100" Me.lb_clientes.RowSource = "logros" Me.TextBox1.SetFocus End Sub
Luego trato de realizar un filtro de la informacion de la tabla de la siguiente manera.
Private Sub TextBox1_Change() 'cuando el valor en la TextBox1 cambie: Application.ScreenUpdating = False '1) Aqui trato de limpiar el contenido de la ListBox, pero no puedo porque _ 'previamente he cargado una lista entonces me da error ¿Como puedo limpiarla?. Me.lb_clientes.Clear 'Aquí selecciono y activo la primera celda con la base de datos Worksheets("Hoja1").Activate Range("A1").Activate 'Defino las variables necesarias fil = 1 texbuscado = TextBox1.Text indfil = 0 'Inicio bucle for while esta condicion para que llegue al _ 'final de la tabla. While ActiveCell.Offset(fil, 0).Value <> "" 'Defino mas variables deacuerdo al contenido en cada fila. ActiveCell.Offset(fil, 0).Activate texto1 = ActiveCell.Value texto2 = ActiveCell.Offset(0, 1).Value texto3 = ActiveCell.Offset(0, 2).Value coincidencia = InStr(1, UCase(texto1 & " " & texto2 & " " & texto3), UCase(texbuscado)) If coincidencia > 0 Then Me.lb_clientes.AddItem texto1 Me.lb_clientes.List(indfil, 1) = texto2 Me.lb_clientes.List(indfil, 2) = texto3 indfil = indfil + 1 End If fil = fil + 1 Wend Application.ScreenUpdating = True End Sub
Exeptuando la parte en la que trato de limpiar la ListBox, funciona, pero solo agrega las filas hasta que da el tamaño que tiene la listbox de alto, es decir, no sigue agregando valores de tal forma que me ponga la barrita de desplazamiento al lado derecho que permitira ver todas las coinsidencias segun lo que escriba en la textbox1.
Agradezco su colaboraciony si hay alguna forma más sencilla de hacer que funcione, estoy abierto a cualquier sugerencia.
Aquí el ARCHIVO si lo desean.