Se puede asignar una variable a ColumnWidths de un listbox

Hola de nuevo, tengo el siguiente problemilla. Tengo una tabla en una hoja. Quiero mostrarla con un listbox, pero necesito configurar el ColumnWidths de tal manera que solo me muestre aquella columnas de la tabla que no estén en blanco.

La tabla va cambiando según ciertos registros, dejando columnas en blanco y otras con datos

es posible poder configurar el listbox ?

Gracias

1 respuesta

Respuesta
1

Puedes poner un ejemplo, es decir, si un registro del listbox tiene 5 columnas y otro registro tiene 3 columnas, ¿quieres qué se muestren solamente 3 columnas de ambos registros?

Si es afirmativa la respuesta a lo anterior, entonces te podría servir esto:

Private Sub UserForm_activate()
ListBox1.ColumnCount = 8
ListBox1.RowSource = "A1:F10"
colmin = ListBox1.ColumnCount
For i = 0 To ListBox1.ListCount - 1
    For j = 0 To ListBox1.ColumnCount - 1
        If ListBox1.Column(j, i) = "" Then
            If colmin > j Then
                colmin = j
            End If
            j = ListBox1.ColumnCount
        End If
    Next
Next
ListBox1.ColumnCount = colmin
End Sub

Sólo que debes declarar al principio, cuál es el máximo de columnas y después con esta macro se ajustaría a las columnas que tienen datos

Saludos. Dam

Gracias Dam, he probado lo que me has mandado pero no resulta, solo me coge la primera columna.

Quiero mostrar en el listbox todas las columnas que contengan datos.es decir no mostrar aquellas que no tengan ningún dato (p.e. si tengo un Range ("a1:s20"), y las columnas c1:c20; f1:f20, l1:l20 no tiene ningundato, me gustaría que al presentaralas en un list no aparecieran. Las columnas son dinámicas, es decir van cambiando con ciertos datos.

Exactamente tengo una tabla en hoja con 19 columnas y 20 .La columnas 4,7,9 y 13 por ejemplo están totalmente vacías.Lo que necesito es que se muestre en el listbox el resto de columnas( las 15 restantes).

Gracias

La macro que te envié responde a lo que te entendí en tu primer explicación, ¿entonces si toda la columna que cargaste en el listbox no tiene datos quieres que no se muestre?

¿Y cómo cargaste el as columnas en el listobox?

¿Con rowsource?

Gracias Dam, cargue con rowsource la tabla de datos.

Si, necesito ocultar estas columnas que no tienen nada ,

Estoy viendo la posibilidad de presentar los datos con algún camino alternativo como el uso de una spredsheet en userform.

Pero necesito tiempo para entender su procedimiento.

No se , que me recomiendas?

gracias

Puedes intentar con esta macro

Suponiendo que tus valores están de A1 a H10, si una columna está vacía, el ancho de la columna será 0

Te anexo mi archivo para que lo revises, ejecuta el formulario.

Private Sub UserForm_Activate()
ListBox1.ColumnCount = 8
llena = 0
For j = 1 To 8 'columnas
    For i = 1 To 10 'filas
        If Cells(i, j) <> "" Then
            llena = 1
            i = 10
        End If
    Next
    If llena = 0 Then
        'la columna está vacía
        Select Case j
            Case 1
                c1 = 0
            Case 2
                c2 = 0
            Case 3
                c3 = 0
            Case 4
                c4 = 0
            Case 5
                c5 = 0
            Case 6
                c6 = 0
            Case 7
                c7 = 0
            Case 8
                c8 = 0
        End Select
    End If
    llena = 0
Next
ListBox1.ColumnWidths = c1 & ";" & c2 & ";" & c3 & ";" & c4 & ";" & _
                        c5 & ";" & c6 & ";" & c7 & ";" & c8
ListBox1.RowSource = "A1:H10"
End Sub

También si quieres probar con spreadsheet, lo revisamos.

Saludos. Dam

Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas