ÍTEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW

Hola a todos:

Cuando cargamos los datos en un listbox puede ser que necesitemos que se coloreen o remarquen ciertos ítems de un color determinado según una condición. Esto no lo vamos a lograr con un listbox, sino con otro control de formulario muy parecido, el listview.

Este control lo podremos instalar pulsando con el botón derecho del ratón en el cuadro de herramientas de nuestro formulario.

ITEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW

y a continuación pulsando en “Controles adicionales” y seleccionando Microsoft ListView Control, versión 6.0 

ITEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW_1

Una vez instalado ya lo podemos programar y usar. En la imagen anterior véis que se trata de un control muy parecido al listbox.

Pues bien, vamos a hacer un ejercicio de ejemplo para que veais como podemos programar este control de formulario.

ITEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW_2

Dada esta base de datos, vamos a cargar todos estos ítems en nuestro listview y colorear según las siguientes condiciones:

  • si la edad es <= “25”  entonces el color de la fuente será una variedad de azul: RGB(0, 112, 192)
  • si la edad es > “45” entonces el color de la fuente será rojo (vbRed).
  • si es otra edad, el color será el establecido por defecto.

Para realizar todo esto utilizaremos este código vinculado a un botón de ejecución dentro del mismo formulario:

Option Explicit
Private Sub CommandButton1_Click()
'Definimos variables
Dim fin As Long, final As Long
Dim i As Long, j As Long, c As Long
Dim Dato As Object
fin = Application.CountA(Range("A:A"))
final = Application.CountA(Range("1:1"))
With ListView1
'Limpiamos los items del listview
.ListItems.Clear
'seleccionamos toda la línea
.FullRowSelect = True
'indicamos vista reporte
.View = lvwReport
With .ColumnHeaders
'Limpiamos y creamos encabezados
.Clear
.Add Text:="ID", Width:=30
.Add Text:="NOMBRE COMPLETO", Width:=160
.Add Text:="SECCIÓN", Width:=120
.Add Text:="EDAD", Width:=30
.Add Text:="SEXO", Width:=60
.Add Text:="2º IDIOMA", Width:=60
.Add Text:="ESTUDIOS", Width:=160
End With
'Cargamos datos de la hoja
'Si el valor es menor o igual a 25 años marcamos con color RGB
For i = 2 To fin
If Cells(i, 4).Value <= "25" Then
Set Dato = .ListItems.Add(Text:=Cells(i, 1).Value)
Dato.ForeColor = RGB(0, 112, 192)
With Dato.ListSubItems
For c = 2 To final
.Add Text:=Cells(i, c).Value
Next c
For j = 1 To .Count
.Item(j).ForeColor = RGB(0, 112, 192)
Next j
End With
'Si el valor es mayor que 45 años marcamos con color rojo
ElseIf Cells(i, 4).Value > "45" Then
Set Dato = .ListItems.Add(Text:=Cells(i, 1).Value)
Dato.ForeColor = vbRed
With Dato.ListSubItems
For c = 2 To final
.Add Text:=Cells(i, c).Value
Next c
For j = 1 To .Count
.Item(j).ForeColor = vbRed
Next j
End With
'caso contrario, no coloreamos
Else
Set Dato = .ListItems.Add(Text:=Cells(i, 1).Value)
With Dato.ListSubItems
For c = 2 To final
.Add Text:=Cells(i, c).Value
Next c
End With
End If
Next i
End With
End Sub

El resultado será el siguiente:

ITEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW_3

Como podéis observar, cuando cargamos los datos se aplican los criterios de nuestra condición.

Y esto es todo!.

Descarga el archivo de ejemplo pulsando en: ÍTEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies