Como filtrar un Listbox y seleccionar la información de un registro pasándolo a otro formulario para editarlo

Tengo un archivo con más de 5mil registros de ventas de mi negocio y por medio de un listbox, cargo toda la información de mis ventas. Cuando le doy doble click a algún registro del listbox se abre otro formulario donde me aparecen los datos de ese registro y yo los puedo modificar. Aquí lo que a mi me gustaría es poder filtrar la información, ejemplo: busco la nota de venta 500 y que solo me aparezca esa información, ya que tenga filtrado, al seleccionar uno de los registros filtrados me pueda dar los datos de ese registro en el otro formulario.

Respuesta
1

Puedes subir tu archivo a google drive y compartirlo. Lo reviso y te ayudo con el código.

1 respuesta más de otro experto

Respuesta
2

Comentas: '... por medio de un listbox, cargo toda la información de mis ventas.'

Entiendo entonces, que tendrás un Userform y si lo que necesitas es llenar ese listbox con información filtrada por algún criterio, entonces el siguiente código te servirá.

Estoy utilizando un botón pero bien puede ser en el mismo evento Exit del Textbox. En mi ejemplo estoy filtrando por texto de modo parcial, pero dejo la instrucción por si se trata de valores numéricos (deshabilitá la 1ra y habilitá la 2da instrucción). Aquí solo se muestran algunas col... ajusta a tu modelo.

Private Sub CommandButton1_Click()
'controla si se ingresó algún criterio en el textbox
If TextBox1 = "" Then MsgBox "Falta ingresar el criterio de búsqueda.": Exit Sub
'Application.ScreenUpdating = false
dato1 = "*" & TextBox1.Value & "*"     'para búsqueda tipo 'contiene'
'dato1 = Val(TextBox1)                  'para búsqueda por campos numéricos
'el criterio se encuentra en col G (7)
Range("$A$3:$G$" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=7, Criteria1:=dato1, Operator:=xlAnd
Call llenaLista
End Sub
Sub llenaLista()
ListBox1.Clear
x = Range("A" & Rows.Count).End(xlUp).Row
If x < 4 Then Exit Sub
For Each cd In Range("A4:A" & x).SpecialCells(xlCellTypeVisible)
    ListBox1.AddItem Range("D" & cd.Row)
    i = ListBox1.ListCount - 1
    ListBox1.List(i, 1) = Range("F" & cd.Row)
    ListBox1.List(i, 2) = Range("G" & cd.Row)
Next cd
End Sub

Las 2 macros las coloco en el primer Userform. Deberás ajustar los nombres de controles, las columnas de tu base y cantidad de col del Listbox.

PD) En video 36 de mi canal dejo otros ejemplos de Filtro dinámico con formularios.

Sdos.

Elsa

http://aplicaexcel.com

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas