Ajustar tamaño userform y contenido

Tengo un userform y quiero que este se ajuste al tamaño de la pantalla del usuario, pero que ademas su contenido; botones frames conserven el mismo lugar dentro del formulario.
La primera parte ya la conseguí con un código expuesto anteriormente aquí. Les pido colaboración, tengo un frame ubicado justo en la esquina infererior izquierda de mi userfom y quiero que siempre permanezca allí, así cambie el tamaño de mi userform.

1 respuesta

Respuesta
1
Puedes calcular las nuevas posiciones, basado en la diferencia (porcentaje) que hubo, entre la medida original del userform (alto) y la medida después de ajustarlo a la pantalla, es decir
Si tu userform mide originalmente (desde tu diseño) 800 de alto, y después de ajustarlo a la pantalla mide 1200, según la regla de tres la diferencia es:
800 - 1
¿1200 -?
Entonces:
(1200 * 1) / 800 = 1,5
Ahora, si tu frame esta ubicado originalmente a la altura de 700, después del ajuste a la panta, deberás cambiarla la propiedad TOP desde código y ubicarlo a:
1,5 * 700 = 1050
Y así sucesivamente con todos los objetos del formulario, (este código de calcular la diferencia (regla de tre) y de reubicación de los objetos, debes colocarlo en el evento RESIZE del userform.
Recuerda que debes hacer otra regla de tres para la ubicación de izquierda a derecha, para la propiedad LEFT de los objetos.
"El conocimiento le pertenece al mundo".
Gracias experto, pero si me pudieras dar un ejemplo seria muchísimo mejor ya que la verdad no domino muy bien el código. Tan solo debo colocar un frame el cual una de sus esquinas esta en la misma posición de la esquina del userform osea abajo a la izquierda, no es más. Lo que sucede es que las resoluciones de los monitores cambian mucho y este frame debe estar ligado siempre al userform.
Te agradezco.
'Aquí va el ejemplo:
'Código dentro de un módulo_______
'Variable para rescatar medida original del userform1,
'y ubicacion original del frame dentro del formulario:
Public MedidasForm(2) As Double
Public UbicacionObjeto(2) As Double
'Código dentro del evento LOAD del formulario_____
'rescatando medidas y ubicacion original::
MedidasForm(1) = UserForm1.Height 'Alto
MedidasForm(2) = UserForm1.Width 'Ancho
UbicacionObjeto(1) = Frame1.Top 'Eje y
UbicacionObjeto(2) = Frame1.Left 'Eje x
'Código dentro del evento RESIZE del formulario_______
Dim DiferenciaAncho As Double
Dim DiferenciaAlto As Double
'
DiferenciaAlto = UserForm1.Height / MedidasForm(1)
DiferenciaAncho = UserForm1.Width / MedidasForm(2)
'
Frame1.Top = UbicacionObjeto(1) * DiferenciaAlto
Frame1.Left = UbicacionObjeto(2) * DiferenciaAncho
'
'
'"El conocimiento le pertenece al mundo"
Hola experto:
Ya realize los pasos que me indicaste pero el frame queda en la posicion original dentro del form. Si puedes dame tu correo para enviarte mi caso.
Gracias
Todas mis respuestas son probadas de antemano, hice un miniprograma exclusivamente para probar antes de darte la respuesta; desafortunadamente no tengo correo electrónico destinado para esto. Sigue todas las indicaciones al pie de la letra y tendrás éxito; quizá el error sea que no estás usando los eventos del Userform correctamente.
No olvides finalizar y puntuar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas