28 julio, 2021

Í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

Comparte este post

10 comentario en “ÍTEMS EN LISTBOX CON COLORES. CONTROL LISTVIEW

      1. Instalé los Controles de la siguiente manera: Cuadro de Herramientas/Controles adicionales/Microsoft ListView Control 6.0/ Microsoft MonthView Control 6.0 (SP6) . Al dar Clic en Generar ListView/ aparece ERROR: No se encuentra el proyecto o la biblioteca y lo manda a: IvwReport

        1. Hola Emiro: Baja mi ejemplo y ejecútalo. Si te muestra el error que indicas, entra en las referencias (no en los Controles Adicionales) y verifica cual de los controles no tienes en tu equipo.

          Está claro que el error que te muestra se debe a que no tienes la biblioteca en tu equipo. Intenta descargar un complemento con dicho control, es lo único que te puedo recomendar.

          Ahora mismo estoy ejecutando esta macro en un equipo con Office 365 ProPlus a 64 bits. Saludos

    1. Hola Daniel:

      Deberías tener ese control en 2016, recuerda que no está en la biblioteca de referencias sino en controles adicionales. Tendrías que buscar documentación en internet para descargar una actualización de ese control.

      Saludos

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies