Ordenar columna numérica en listbox

Tengo a siguiente duda tengo un listbox con más de 10 columnas, necesito alinear los compos numéricos hacia la derecha, si es posible con formato "#,##0.00", el formato se lo doy desde la hoja pero al cargarlo al listbox lo pone a la izquierda, hay una manera de poder mejorarlo.

El código que utilizo es el siguiente

    x = 0
    Names.Add Name:="resumen", RefersTo:="=temp!A:S"
With forma
     .ColumnCount = 19
     .ColumnWidths = "60 pt; 60 pt; 180 pt; 120 pt; 60 pt; 60 pt; 60 pt;60 pt; 60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt"
End With
   forma.RowSource = "resumen"

1 Respuesta

Respuesta
2

H o l a:

Voy a suponer lo siguiente.

- Estás poniendo la información en la hoja "temp" de manera temporal y después la cargas en el listbox.

- En la columna "D" tienes un importe.

- En la columna 4 del listbox estás poniendo el importe

- El ancho de la columna 4 del listbox es de 120

Entonces, siguiendo con los datos anteriores, el código quedaría así:

    x = 0
    Set ht = Sheets("temp")
    Names.Add Name:="resumen", RefersTo:="=temp!A:S"
    '
    'Actualiza el valor numérico en la celda
    For i = 2 To ht.Range("D" & Rows.Count).End(xlUp).Row
        largo = Len(Format(ht.Cells(i, "D"), "#,##0.00"))
        espacios = 18 - largo   '18 caracteres son los que caben en 120 pt de ancho de columna
        num1 = "'" & String(espacios, " ") & Format(ht.Cells(i, "D"), "#,##0.00")
        ht.Cells(i, "D") = num1
    Next
    '
    With forma
        'Tiene que llevar formato Courier, para que se pueda alinear
        .Font = "Courier"
        .ColumnCount = 19
        .ColumnWidths = "60 pt; 60 pt; 180 pt; 120 pt; 60 pt; 60 pt; 60 pt;60 pt; 60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt;60 pt"
    End With
    forma.RowSource = "resumen"

En el listbox se vería así, en la columna EJEMPLO3, el importe está sin formato y sin alinear, en el EJEMPLO4 el importe está con formato y alineado a la derecha.


En la columna "D" el importe quedará como texto, no podrás ocupar esa columna para hacer cálculos, por eso es importante que si vas a realizar algún cálculo lo realices antes de que se formatee.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas