Como agregar los encabezados a un listbox excel-vb

Eh tratado de utilizar la propiedad columnheads

Dim i As Long
Private Sub CommandButton8_Click()
    Dim arrData() As String
    With ListBox1
        .ColumnCount = 12 'numero de columnas
        .ColumnWidths = "40 pt;40 pt;40 pt;40 pt;40 pt; " & _
                        "40 pt;40 pt;40 pt;40 pt;40 pt; " & _
                        "40 pt;40 pt"
    End With
    f = ListBox1.ListCount
    j = ListBox1.ColumnCount
    ReDim arrData(f, j)
    For n = 0 To j
        For m = 0 To f - 1
            'dato = ListBox1.List(m, n)
            arrData(m, n) = ListBox1.List(m, n)
        Next m
    Next n
    arrData(f, 0) = txt_numcomp
    arrData(f, 1) = txt_cantidad
    arrData(f, 2) = txt_cantidad
    arrData(f, 3) = txt_cantidad
    arrData(f, 4) = txt_cantidad
    arrData(f, 5) = txt_cantidad
    arrData(f, 6) = txt_cantidad
    arrData(f, 7) = txt_cantidad
    arrData(f, 8) = txt_cantidad
    arrData(f, 9) = txt_cantidad
    arrData(f, 10) = txt_cantidad
    arrData(f, 11) = txt_cantidad
    '
    '... y los que quieras
    '
    ListBox1.List = arrData()
    sumarImportes
End Sub

para los encabezados de mis listbox pero no eh tenido suerte no se como aplicarlo de la forma correcta. A qui les dejo el código para que ayude

1 respuesta

Respuesta
1

En primer lugar recomiendo utilizar la barra de Propiedades de los controles (en el Editor, en margen izquierdo) y evitar así líneas de instrucción.

Observa que el rango asociado en la propiedad RowSource empieza en fila 2 y Excel asume que los títulos se encuentran en la fila 1.

Pero si vas a llenar el listbox mediante instrucciones del tipo Additem... no podrás llenar la fila de títulos. En esos casos colocamos los títulos por encima en controles Label.

Primero que todo muchas gracias por responder mi pregunta. Mi problema es que mi listbox tiene más 16 columna y si uso label para agregar el encabezado los el userfrom me quedaría demasiado grande y es lo que no quiero, y al usar la propiedad rowsource me manda error por que estoy agregando el contenido del listbox con .list y me manda un error diciendo permiso denegado y me subraya esto

Si tu listbox tiene más de 10 col utilizarás la propiedad RowSource o el método con matriz que te envié Dante.

Y para la fila de títulos, si no deseas colocar controles label debes colocar otro ListBox de 1 sola fila. Y lo llenarás también armando una matriz (de 1 sola fila). Siguiendo tu macro anterior este sería el código para un Listbox2 que se llena al abrir el UF.

Estoy tomando los datos de la celdas en fila1 de la hoja activa... ajusta a tu caso.

Private Sub UserForm_Initialize()
'x Elsamatilde
Dim matrix() As String
With ListBox2       'lista de encabezados
    .ColumnCount = 12 'numero de columnas
    .ColumnWidths = "40 pt;40 pt;40 pt;40 pt;40 pt; " & _
                    "40 pt;40 pt;40 pt;40 pt;40 pt; " & _
                    "40 pt;40 pt"
End With
'este listbox tiene solo 1 fila
f = 1: M = 0
j = ListBox2.ColumnCount
ReDim matrix(f, j)
For n = 0 To j
    matrix(M, n) = Cells(1, n + 1) 'indicar la hoja de dónde se toman los datos
Next n
ListBox2.List = matrix()
End Sub

Te quedará algo así:

Ahora, con respecto al error que me muestras no puedo ayudarte porque se trata de un error en la macro enviada por el otro experto... debieras comentarlo con él.

Te recuerdo que la consulta sigue como 'pendiente'... debes valorarla para darla por cerrada, considerando que se te respondió a tu duda planteada.

Si no es así comenta y lo seguimos tratando.

Si necesitas que revise el error de la macro enviada por el experto anterior debes enviarme el libro para que pueda revisar todo el código. Mis correos aparecen en mi sitio que dejo al pie.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas