Mostrar en un listbox solo filas que contengan datos

Mostrar en un listbox solo las filas que contengan datos .

1 respuesta

Respuesta
2

¿Y con qué versión Excel estarás trabajando?


1- Filtrá tu rango de datos por 'vacías'

2- Copiá el rango filtrado a otro rango auxiliar.

Asigná a tu Listbox el rango filtrado desde la propiedad RowSource, o con esta instrucción en algún evento como puede ser Initialize de un Userform:

Listbox1.Rowsource = "=Hoja1!M2:T20"

Los pasos 1 y 2 podés realizarlos con la grabadora de macros encendida y cuando la detengas observarás en un módulo las instrucciones que colocarás justo antes de la asignación del Rowsource.

Si luego necesitas ayuda para pulir el código dejame todo escrito aquí aclarando versión excel, nro de col del listbox y demás.

Sdos

Elsa

<a>http://aplicaexcel.galeon.com/macros.htm</a>

Hola, muchas gracias por la pronta respuesta. No entendí muy bien la instrucción. Voy a explicarme un poco mejor:

1. tengo un userform con varios textbox

2. por medio de ese form y textbox introduzco datos a una hoja de excel, dispuestos en filas (una tabla, por así decir)

3. en el mismo form, tengo un listbox que me despliega la hoja (o la tabla, según lo programe) y los datos que ingreso

4. sin embargo, la única manera que encuentro de que el listbox se actualice cada vez que ingreso un dato, es dando un rango muy amplio al rowsource, por lo que a partir del último dato ingresado, en el listbox, hacia abajo queda un espacio enorme difícil de controlar con el scrollbar

4. en otras palabras, necesito que el listbox solo presente los datos que voy ingresando, o sea, que la tabla que le asigne se vaya expandiendo automáticamente conforme ingreso los datos.

Ví un ejemplo de expansión automática de tabla asociada a un listbox, que me serviría mucho, sin embargo no se como hacer que funcione la expansión automática de tabla. Ya habilité las casillas en las opciones de excel y todo, pero no sé como se hace.

Espero tu ayuda pronto. Mi excel es 2007.

Muchas gracias.

En ese caso no le asignes la propiedad RowSource en modo diseño, sino mediante código.

Lo tendrás que hacer al momento de inicializar el Userform (evento Initialize) y luego en cada pase de datos.

Te dejo un ejemplo:

Private Sub UserForm_Initialize()
ListBox1.RowSource = "=Hoja2!$I$2:$I$" & Sheets("Hoja2").Range("I65536").End(xlUp).Row
End Sub
Private Sub CommandButton1_Click()
Sheets("Hoja2").Range("I" & Range("I20000").End(xlUp).Row + 1) = TextBox1
ListBox1.RowSource = "=Hoja2!$I$2:$I$" & Sheets("Hoja2").Range("I65536").End(xlUp).Row
End Sub

¿Quedó claro o necesitas que te envíe el ejemplo? Si todo está resuelto no olvides finalizar la consulta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas