Continuando con algún post anterior en el que veíamos como trabajar con un Formulario (UserForm), explicaré hoy como incluir un ListBox en un formulario con datos extraidos de nuestra hoja de cálculo, pero con varias columnas de datos y respetando la cabecera de rótulos:
Lo más cómodo e importante para emezar a trabajar será convertir nuestro rango de datos en una Tabla de Excel(Ctrl+q para Excel 2007 y Ctrl+t para Escel 2010). Veamos nuestro origen de datos nombrada como Tabla1:
Con nuestra Tabla1 creada, ya podemos irnos al Editor de VBA (Alt+F11) e insertar un UserForm (Formulario), buscaremos en la ventana de controles la opción Cuadro de lista, y lo desplegaremos dentro del Formulario donde deseemos::
Una vez incluido el ListBox en nuestro formulario, deberes configurarlo para que recoja los registros de nuestra Tabla1 de la Hoja de cálculo como elementos del recien creado ListBox1, además deberemos definirlo de tal forma que el encabezado de la Tabla1 aparezca como cabecera de nuestro ListBox1, por supuesto, cada campo deberá aparecer en una columna independiente.
Para ello deberemos trabajar con distintas propiedades de este ListBox, como son:
Veamos cómo definimos estas propiedades con código VBA, para ello haremos doble click sobre nuestro UserForm y añadiremos el código:
Con la intrucción Private Sub UserForm_Initialize() conseguimos que el ListBox se cargue cada vez que iniciamos el formulario.
El resultado del Formulario lo podemos ver al ejecutarlo:
Veamos cómo definimos estas mismas propiedades desde la Ventana de propiedades activa para nuestro ListBox1:
Por supuesto el resultado será el mismo que el expuesto en el método anterior:
A partir de nuestro ListBox podremos trabajar bien sobre otros códigos o bien directamente sobre nuestra Hoja de cálculo... pero eso será en posteriores entradas.
Lo más cómodo e importante para emezar a trabajar será convertir nuestro rango de datos en una Tabla de Excel(Ctrl+q para Excel 2007 y Ctrl+t para Escel 2010). Veamos nuestro origen de datos nombrada como Tabla1:
Con nuestra Tabla1 creada, ya podemos irnos al Editor de VBA (Alt+F11) e insertar un UserForm (Formulario), buscaremos en la ventana de controles la opción Cuadro de lista, y lo desplegaremos dentro del Formulario donde deseemos::
Una vez incluido el ListBox en nuestro formulario, deberes configurarlo para que recoja los registros de nuestra Tabla1 de la Hoja de cálculo como elementos del recien creado ListBox1, además deberemos definirlo de tal forma que el encabezado de la Tabla1 aparezca como cabecera de nuestro ListBox1, por supuesto, cada campo deberá aparecer en una columna independiente.
Para ello deberemos trabajar con distintas propiedades de este ListBox, como son:
- ColumnCount: en el que indicaremos cuantas columnas vamos a crear, para nuestro ejemplo, le asignaremos un valor de tres (una por cada campo 'Producto', 'Unidades' y 'Precio')
- ColumnHead: donde seleccionaremos True o False dependiendo de si queremos mostrar encabezado o no.
Ojo, por que en este caso, es importante para evitar posibles fallos, haber definido nuestro origen de datos, en la Hoja de cálculo, como Tabla Lista. - RowSource: donde le indicaremos dónde se encuentra el origen de datos, para nosotros será 'Tabla1'.
Veamos cómo definimos estas propiedades con código VBA, para ello haremos doble click sobre nuestro UserForm y añadiremos el código:
Private Sub UserForm_Initialize() 'le decimos cuántas columnas tendrá ListBox1.ColumnCount = 3 'que sí que tiene encabezado ListBox1.ColumnHeads = True 'el origen de datos en nuestra hoja de cálculo ListBox1.RowSource = "Tabla1" End Sub
Con la intrucción Private Sub UserForm_Initialize() conseguimos que el ListBox se cargue cada vez que iniciamos el formulario.
El resultado del Formulario lo podemos ver al ejecutarlo:
Veamos cómo definimos estas mismas propiedades desde la Ventana de propiedades activa para nuestro ListBox1:
Por supuesto el resultado será el mismo que el expuesto en el método anterior:
A partir de nuestro ListBox podremos trabajar bien sobre otros códigos o bien directamente sobre nuestra Hoja de cálculo... pero eso será en posteriores entradas.











tengo en excel 2007 varias ventas y mme pidieron hacer un formulario que solo salga el resultado solo la repuesta que cuando diga con un boton ventas salga solo los resultados de la venta como especie d ereporte con un formulario me llamo fernando mi correo es elmorita@hotmail.com me gustaria que me ayuden soy nuevo en es ta area cree un menu que dice vents asi quiero solo el resultado de las ventas gracias
ResponderSuprimirHola!!
Suprimir¿podrías ser algo más claro en tu exposición???
Slds
Una consulta y cual seria el codigo para que visualize el ultimo dato, osea que muestre el encabezado y el ultimo producto?
ResponderSuprimirGracias
Hola!!
Suprimirdificil cuestión, al menos para mí.. el problema con el que me encuentro, no es determinar un rango de lista sólo con un elemento, si no que además del encabezado, necesitas listar sólo el último elemento (o sea, una lista de un único elemento- quizá necesites otro control??).
Desconozco la posibilidad de incorporar de un rango o matriz discontinua, la primera fila como Header de un ListBox...
Para listar los últimos elementos de un Origen de tres columnas, que se encuentre, por ejemplo en la fila 8, necesitarías incorporar el siguiente código:
ListBox1.AddItem Cells(8, 1).Value
ListBox1.List(0, 1) = Cells(8, 2).Value
ListBox1.List(0, 2) = Cells(8, 3).Value
Lo siento, pero no puedo ayudarte, ya que el ListBox sólo reconoce el Header (encabezado) usando la propiedad RowSource, que a su vez exige un rango o tabla.
Suerte, y si encuentras una solución, no olvides comentarla
Slds