¿Barra de scroll horizontal de un UserForm?

En la aplicación Excel xlsm que tengo en desarrollo he dispuesto un formulario de búsqueda en el que he incrustado un ListBox con 16 columnas y un ancho de 1313 puntos que desborda el ancho de los monitores de algunos usuarios de ella -aquellos que deliberadamente han dispuesto por problemas de visión personal una configuración de pantalla inferior a la recomendada-; a fin de dar solución a esta eventualidad pretendía dejar el ancho del UserForm en 800 puntos pero disponiendo la posibilidad de una barra de scroll horizontal que pueda ser actuada por los usuarios a fin de que, en las ocasiones que sea preciso, puedan visualizar la totalidad de las columnas dispuestas en el ListBox de marras.

He buscado en youtube un buen vídeo que aborde el tema -pues no me resigno a que la cuestión no tenga solución- y no encuentro nada.

¿Alguien podría decirme qué debo hacer?

2 respuestas

Respuesta
4

Selecciona entre las propiedades del Userform, la que se llama ScrollBars. Allí activá las que necesites.

Sdos.

Elsa

* Evita la pérdida de tiempo de búsqueda en youtube... todos los temas en un solo libro: manual Userform ;)

Hola Elsa, buenas tardes... buenos días ahí...

Lo que me dices ya lo he hecho un montón de veces   :)... pero por alguna razón que no alcanzo a comprender los scrolls que efectivamente se incrustan en el UserForm no cumplen con su 'función natural' &%*Ç%$Ç^?#

En tu consulta solicitas un scroll para el Userform... y con la propiedad que te indiqué podrás activarlos, manteniendo el tamaño 'original' del UF (propiedad width).

Otra opción sería colocarle solo el Scroll al control Listbox, como te han sugerido. Pero viendo tus imágenes, esa opción no te permite ver el resto del Userform:

Por lo tanto, decide qué será lo mejor para tí.

También es posible cambiar la dimensión de todo el UF dependiendo del tamaño de la pantalla.

En este momento no recuerdo el código, quizás Dante te pueda ayudar. Sino mañana te enviaré respuesta si te parece que pueda ser una buena opción.

Sdos!

Respuesta
1

Entiendo que quieres un la barra para el userform, pero por defecto el ListBox tiene su propia barra de desplazamiento que se activa en automático cuando las columnas exceden el ancho del listbox:

De esa manera el form se matiene estático, tienes a la vista tus controles y desplazas únicamente las columnas del listbox.

------------------------

Recomendaciones:

Curso de macros. Consejos para empezar a programar. - YouTube

--------------------

Sal u dos Dante Amor

Hola Dante  :)  me temo que la solución que me aportas no resuelve 'mi' problema...  :)

La solución creo que debe pasar necesariamente por que funcione adecuadamente el scrollbar horizontal del UserForm, no del ListBox.

Y es que en el UserForm tengo desplegados hasta 8 TextBox con sus correspondientes botones de comando cuyo 'papel' en el UserForm es ayudar a buscar un registro que cumpla las condiciones de búsqueda escritas en uno de esos 8 TextBox, y presentarlos en el ListBox. Después, seleccionado un registro, sus valores -los que son susceptibles de ser modificados, pues no todos lo son-, se muestran en otros TextBox al pie del formulario, a fin de que el usuario pueda modificar lo que corresponda.

Más: Dado que el ListBox no presenta los encabezados identificativos de las 16 columnas que definen el registro -no sé cómo hacerlo si es que eso es posible-, como elementos estáticos dentro del UserForm, he dispuesto 16 TextBox inmediatamente encima de los datos que presenta el ListBox, que ayudan a identificar claramente qué quieren decir los datos figurados en él...

En fin, que por múltiples razones la solución pasa por resolver, como ya he dicho por ahí, que funcione adecuadamente el scrollbar del Userform.

Para que te aparezca la barra del scroll y en sí, la barra para poder desplazarte:

Debes hacer lo siguiente, además de activar la propiedad ScrollBars del Userform poniéndola en: 1-fmScrollBarsHorizontal.

Debes poner el ancho de la barra en la propiedad ScrollWidth, por ejemplo, si dices que tu UserForm es de 800, entonces en la propiedad ScrollWidth pon 1300. Puedes cambiar a 2000, por ejemplo y la barra será más delgada. En este punto debes probar con varios números para que veas cuál es el que te conviene, pero te sugiero empezar en 1300 o 1500.

La siguiente propiedad: ScrollLeft, es para indicarle en cuál punto quieres que inicie la barra, por ejemplo, si le pongo 150, la barra iniciará 150 puntos de la izquierda. Si no lo necesitas, entonces la dejas en 0.


RECOMENDACIONES:

Excel vba dictionary parte 1 - YouTube

Curso de Macros y Matrices en Excel. Ejercicio 1 - YouTube

Sal u dos Dante Amor

Revisa estas respuestas:

Como vincular una barra desplazamiento a una imagen userform vba

Como colocar una barra de desplazamiento en formulario?

Aquí mismo, en mis respuesta puedes encontrar las soluciones.

Sal u dos Dante Amor.

¡Gracias Dante!

Tema resuelto,  no estaba cambiando la propiedad del ScrollWidth y la barra de Scroll no 'trabajaba' adecuadamente.

U para cerrar definitivamente esta cuestión: ¿cómo debo operar para que el listbox no me presente scroll alguno? Pongo en su propiedad width la suma exacta de los anchos de sus columnas/items y pese a ello me sigue apareciendo.

Debes reducir más las columnas del listbox, hasta que todas las columnas estén dentro del listbox, de esa manera la barra del scroll horizontal del listbox desaparece.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas