Líneas separadoras listbox, ¿Cómo se hacen? VBA

Tengo un listbox que muestra una información. Me gustaría saber si hay algún modo de poder hacer las líneas separadoras entre columnas y filas para poder separar los datos (estilo tabla).

Mi código esta hecho con un listbox pero he visto que también existe el listview y no se muy bien la diferencia que hay y si me serviría.
Me gustaría poderle dar un formato como de tabla (una línea de un color más oscuro y otro más claro o en su defecto líneas separadoras.)
He intentado arreglarlo con algún label o frame pero no funciona bien (el problema que he tenido con el frame es que no se puede poner en transparente)
Quiero decir que en un futuro me gustaría que ese listbox me mostrara un aviso. (Comento esto porque no se si es importante) Este aviso consistirá en iluminar la fila del listbox de color rojo siempre y cuando cumpla una condición. Este aviso me indicara que hace menos de 1 mes que esa empresa hizo un pedido.
Adjunto una foto para que podáis entenderlo bien

2 respuestas

Respuesta
2

Tengo un modelo con separación de filas:

Para lograr esto, al llenar cada fila del listbox se agrega una más con los guiones en todas sus columnas. En mi ejemplo le di un ancho mayor a la columna 0.

ListBox3. AddItem "-------------------------------------------------------"
For nroli = 1 To 9
    ListBox3.List(i, nroli) = "----"
Next nroli

Para separar columnas tendrías que utilizar una columna para la barra, lo que incrementaría demasiado la cantidad de columnas. No sabría hacerlo de otro modo.

Muchas gracias elsa, veo que funciona a la perfección con las barras horizontales pero con las verticales no. Además que me duplica la extensión de la base de datos.

Creo que intentare animarme hacerlo con el listview, si no lo logro ya he visto que tu método funciona.

Gracias

Respuesta
2

Puedes usar el control ListView en lugar del ListBox.

El control ListView no viene en la paleta de controles por defecto, debes agregar su referencia manualmente.

El control ListView es un poco más complejo para trabajarlo pero tiene más funciones, como por ejemplo, hacer lo que quieres, separación de filas y columnas con líneas. También puedes poner checkboxes a los elementos, puedes cambiar su fiesta de reporte a items, etc etc.

Lee sobre este control para que tengas una idea. Si tienes dudas sobre como usarlo, abre una pregunta dedicada a este control.

Ejemplo de como luce (una de varias apariencias que tiene):

Andy

Hola andy muchas gracias de nuevo, voy animarme hacerlo con el listview.

El codigo lo tengo creado para el listbox, espero que no sea muy complicado adaptarlo porque desconocia hasta ayer el listview.

En caso de que tenga alguna duda abriré otro tema de consulta.

Desde tu experiencia es mucho más complicado hacerlo con el listview? valdría la pena meterse en esos problemas por lo que se consigue?  

Gracias de nuevo andy es un placer aprender contigo

Lo que se te puede complicar es cargar el ListView ya que no cuenta con una propiedad relacionada directamente a un rango como seria el RowSource del ListBox, asi que el ListView se carga con programacion, debes escribir el codigo de cargar la informacion.

Ahora bien, si me pides mi opnion sobre si deberias aprender a usarlo te diria que si. Yo no uso mucho VBA, solo para cosas muy sencillas y tareas de oficina, pero las pocas veces que hago algo y tengo que elegir entre un ListBox y un ListView, por lo general elijo el ListView porque es mas presentable, tiene mejor estetica, es bueno, rinde bien, tiene muchas funciones y flexibilidad y permite hacer mas cosas, tienes mas libertad a la hora de manejar o presentar la informacion ya que tienes que programarlo tu mismo, no dependes de una funcion RowSource hecha por Microsoft, ni el simple ".AddItem".

Esto es un simple ejemplo de algo que se puede hacer con un ListView y no se puede hacer con un ListBox:

Representar colores basados en valores, tambien la fuente fue cambiada a Negrita, esto entre otras cosas es posible con el ListView, es mas flexible y personalizable.

Andy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas