Crear ListBox en forma Horizontal

Todo expertos

Tengo el siguiente código

Private Sub Workbook_Open()
    ActiveSheet.ListBox1.Clear
    For Each h In Sheets
        If h.Name >= "Saldos dia actual" Then
            ActiveSheet.ListBox1.AddItem h.Name
        End If
    Next
End Sub

Este me arroja los nombres de las hojas que se encuentras a la derecha de la hoja "Saldos día actual". Pero el listbox me los lista en forma vertical en lista hacia abajo. 

Así:            

Pero me gustaría que los listara en forma horizontal. Algo como esto;

Es decir hacia el lado. En realidad si estiro el listbox mas alargado hacia el lado este lleve el contenido hacia el lado. Osea que se ajuste al tamaño del listbox. ¿Se podrá algo así? ..

La otra inquietud es que si copio el listbox, en otra hoja, pierde el formato del tamaño e incluso las letras se me agrandan. Siempre tengo que ir a modo diseño y en propiedades estar ajustando los tamaños de la letra en Font ¿Que debo hacer para que el Forms. Listbox mantenga su características y no se pierda si lo copio en otra hoja del libro?

1 respuesta

Respuesta
1

La siguiente macro te llena un listbox de 1 fila y varias columnas. Te recuerdo que el máximo de columnas permitidas es 10.

Private Sub Worksheet_Activate()
'x Elsamatilde
ActiveSheet.ListBox1.Clear
'se asigna la cant de col que será el total de hojas -1
ActiveSheet.ListBox1.ColumnCount = Sheets.Count - 1
i = 0
For Each h In Sheets
If h.Name <> "Saldos dia actual" Then
If i = 0 Then
ActiveSheet.ListBox1.AddItem h.Name
i = 1
Else
ActiveSheet.ListBox1.List(0, i) = h.Name
i = i + 1
End If
End If
Next
End Sub

Por ahora lo dejé en el evento Activate de la hoja Saldos solo por comodidad para las pruebas, luego podés cambiarla y ubicarla en el evento Open.

Con respecto al tamaño haciendo clic derecho sobre la lista, opción Formato, Propiedades podés ajustarlas a gusto. Quizás debas optar por no cambiar tamaño.

PD) En otra ocasión no dejes 2 temas en una misma consulta. Cada tema se trata de modo aparte así ayudamos al buscador del foro.

Sdos y no olvides valorar las respuestas.

Hola Elsa.

Gracias por responder. 

Efectivamente la macro que me presentas me arroja los nombres de las hojas hacia el lados por columnas. Eso si, me arroja cortados los nombres. Si me pudieras indicar donde aumentar los caracteres de modo que me muestre el nombre completo de la hoja en el Listbox. Lo otro,  si yo pincho o marco sobre el nombre de hoja en listbox debería llevarme a esa hoja. Bueno eso podía hacer antes. Ahora,  si marco me toma toda la fila de todas las columnas y me lleva en este caso a la hoja saldos día actual. Necesito que si marco o pincho con el cursor en el listbox el nombre de la hoja me lleve a esa hoja. ¿ se podría solucionar eso?.

Así es como funciona un control ListBox... se selecciona por filas.

Si tu idea es tener un listbox para seleccionar e ir a las hojas debías haberlo dejado en modo vertical, no entiendo porqué lo necesitas entonces en modo horizontal.

Con respecto al tamaño de las col, se puede dar un tamaño diferente a cada una. El tamaño predeterminado es de 72 puntos (1 pulgada), aproximadamente 15 caracteres.

Antes de la instrucción i=0 colocá esta a la que debes completar según la cant de columnas que tengas. Por ahora las medidas van bien para las 3 col de tu imagen:

ActiveSheet.ListBox1.ColumnWidths = "90pt;95pt;95pt"

Sdos!

¡Gracias! Elsa

Si. No es mucho lo que me manejo con macros. Quizás no es listbox lo que necesito para lo que quiero.  Me resulto bien lo de los caracteres.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas