Saltar al contenido

Cómo agregar encabezados a un cuadro de lista de varias columnas en un formulario de usuario de Excel usando VBA

Solución:

No. Creo etiquetas sobre el cuadro de lista para que sirvan como encabezados. Podrías pensar que es una verdadera molestia cambiar las etiquetas cada vez que cambia tu lisbox. Tienes razón, es un dolor. Es un fastidio configurar la primera vez, y mucho menos cambios. Pero no he encontrado una mejor manera.

Aquí está mi enfoque para resolver el problema:

Esta solución requiere que agregue un segundo elemento ListBox y lo coloque encima del primero.

Como esto:

Agregar un ListBox adicional

Luego, llama a la función CreateListBoxHeader para hacer que la alineación sea correcta y agregar elementos de encabezado.

Resultado:

Llame a la función CreateListBoxHeader

Código:

  Public Sub CreateListBoxHeader(body As MSForms.ListBox, header As MSForms.ListBox, arrHeaders)
            ' make column count match
            header.ColumnCount = body.ColumnCount
            header.ColumnWidths = body.ColumnWidths

        ' add header elements
        header.Clear
        header.AddItem
        Dim i As Integer
        For i = 0 To UBound(arrHeaders)
            header.List(0, i) = arrHeaders(i)
        Next i

        ' make it pretty
        body.ZOrder (1)
        header.ZOrder (0)
        header.SpecialEffect = fmSpecialEffectFlat
        header.BackColor = RGB(200, 200, 200)
        header.Height = 10

        ' align header to body (should be done last!)
        header.Width = body.Width
        header.Left = body.Left
        header.Top = body.Top - (header.Height - 1)
End Sub

Uso:

Private Sub UserForm_Activate()
    Call CreateListBoxHeader(Me.listBox_Body, Me.listBox_Header, Array("Header 1", "Header 2"))
End Sub

Estaba viendo este problema en este momento y encontré esta solución. Si tu RowSource apunta a un rango de celdas, los encabezados de columna en un cuadro de lista de varias columnas se toman de las celdas inmediatamente encima de RowSource.

Usando el ejemplo que se muestra aquí, dentro del cuadro de lista, las palabras Símbolo y Nombre aparecen como títulos de título. Cuando cambié la palabra Nombre en la celda AB1, luego abrí el formulario en el VBE nuevamente, los encabezados de las columnas cambiaron.

Captura de pantalla que muestra un rango con nombre y los encabezados de columna fuera del rango.

El ejemplo provino de un libro de trabajo en VBA para modeladores de S. Christian Albright, y estaba tratando de averiguar cómo obtuvo los encabezados de columna en su cuadro de lista 🙂

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *