Cargar listbox con criterio numérico

Nuevamente quisieran me puedan ayudar...

Necesito cargar un listbox al iniciar un formulario vba excel con un criterio, el cual me muestre todos los registros de un inventario que sean menores a 5 unidades.

Eh buscado en la web y puesto en practica, pero no doy con lo que quiero.

1 respuesta

Respuesta
1

[Hola

No se termina de entender qué es lo qué quieres, es decir, tienes datos con ¿varias columnas? Y ¿Una de esas columnas tiene números? Y necesitas que cada fila que tenga, en esa columna, valores menos a cinco se llene en un ListBox ¿es así? ¿Alguna muestra de tus datos?

Abraham Valencia

Hola Abraham... gracias por responder. Efectivamente es eso lo que necesito, tengo 12 columnas y en la columna "H", registro las cantidades de los productos inventariados. En mi formulario tengo un multipage, del cual en la Page4 me muestra el listbox los registros que contengan valores menores a 5 unidades cada vez que se active, lo mismo quiero hacer con los productos que pronto caduquen sus fechas de vencimiento en la Page5.

Si me indica correo le envió link para acceder a la base de dato completa que estoy trabajando...

Muchas gracias...

[Hola

Usa un Drive y comparte por aquí el enlace.

Abraham Valencia

Hola Abraham... lo solicitado...

https://1drv.ms/f/s!An72VgL_xDdIgf5oBB4Vdb2KIDLkPA 

Gracias por tu ayuda...

[Hola

Intenta así:

Dim UltimaFila  As Long
Let UltimaFila = Worksheets("Inventario").Range("A" & Rows.Count).End(xlUp).Row
Let x = 0
ListBox2.List = Range(Cells(1, 13), Cells(1, 22)).Value
For Each Celda In Worksheets("Inventario").Range("A2:A" & UltimaFila)
    If Celda.Offset(0, 7).Value < 4 Then
        ListBox2.AddItem
        ListBox2.List(x, 0) = Celda.Value
        ListBox2.List(x, 1) = Celda.Offset(0, 1)
        ListBox2.List(x, 2) = Celda.Offset(0, 2)
        ListBox2.List(x, 3) = Celda.Offset(0, 3)
        ListBox2.List(x, 4) = Celda.Offset(0, 4)
        ListBox2.List(x, 5) = Celda.Offset(0, 5)
        ListBox2.List(x, 6) = Celda.Offset(0, 6)
        ListBox2.List(x, 7) = Celda.Offset(0, 7)
        ListBox2.List(x, 8) = Celda.Offset(0, 8)
        ListBox2.List(x, 9) = Celda.Offset(0, 9)
        Let x = x + 1
    End If
Next Celda

OJO, cuando se usa List, no es posible mantener los encabezados. No olvides analizar y adaptar a tus necesidades.

Abraham Valencia

Gracias Abraham, me resulto de maravilla el comando era lo que necesitaba... pero me puedes aclarar un pequeño punto en esta línea, me genera una duda...

ListBox2.List = Range(Cells(1, 13), Cells(1, 22)).Value

Ya que es un libro que se generara ingresos y generara bastante información, ¿no me limitara?

Además intente modificarlo para que me realizara lo mismo con la columna de fechas en el listbox3, tomado como referencia a la consulta la fecha del sistema, pero no me resulto (La columna fecha no tiene formato es texto)

Dim UltimaFilaFecha  As Long
Let UltimaFilaFecha = Worksheets("Inventario").Range("A" & Rows.Count).End(xlUp).Row
Let X = 0
ListBox3.List = Range(Cells(1, 13), Cells(1, 22)).Value
For Each celda In Worksheets("Inventario").Range("A2:A" & UltimaFila)
    If celda.Offset(0, 3).Value <> Fecha & Date Then
        ListBox3.AddItem
        ListBox3.List(X, 0) = celda.Value
        ListBox3.List(X, 1) = celda.Offset(0, 1)
        ListBox3.List(X, 2) = celda.Offset(0, 2)
        ListBox3.List(X, 3) = celda.Offset(0, 3)
        ListBox3.List(X, 4) = celda.Offset(0, 4)
        ListBox3.List(X, 5) = celda.Offset(0, 5)
        ListBox3.List(X, 6) = celda.Offset(0, 6)
        ListBox3.List(X, 7) = celda.Offset(0, 7)
        ListBox3.List(X, 8) = celda.Offset(0, 8)
        ListBox3.List(X, 9) = celda.Offset(0, 9)
        Let X = X + 1
    End If
Next celda

Muchas gracias... por tu ayuda...

[Hola

Los Listbox tiene un límite de columnas cuando se usan algunos métodos como el AddItem, entonces para evitar dicho dicha limitación usamos List, pero previamente la línea en cuestión lo que hace es "abrir" la matriz del ListBox, si cuentas las celdas ahí son 10, y las columnas de tu ListBox son 10, es decir, para otro ListBox debes hacer lo mismo, que la cantidad de columnas coincida con la cantidad de celdas de la línea (de preferencia vacías).

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas