hola a todos,
Tengo un formulario de Excel con Visual Basic, el problema es que no tiene la opción de los botones para minimizar y volver a maximizar y esto hace que al estar usando el formulario bloquee demás archivos en Excel, lo que tengo que hacer es cerrar el formulario para poder usarlo. Alguien conoce alguna forma o código para que aparezcan los botones para minimizar o maximizar?, gracias.
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
Hola, Jorel.
Los formularios en Excel no traen los botones de maximizar ni minimizar, porque la idea al emplear formularios, generalmente, es restringir la acción del usuario, limitar y dirigir su accionar. Por defecto los formularios están en estado Modal, es decir, que no se puede hacer más nada en Excel mientras el formulario esté abierto.
Se puede cambiar el estado de la propiedad ShowModal del Form de True a False, para que esto no suceda.
Para que aparezcan los botones de maximizar y minimizar en el Form deberías pegar el siguiente código (fuera de todo evento):
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
Private Sub UserForm_Initialize()
Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long
'Obtenemos el "Handle" del Userform
lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
'Obtenemos el estilo actual del UserForm
lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
'Creamos un nuevo estilo de titulo con los botones deseados
lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
'Aplicamos las nuevas propiedades al UserForm
SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub
No da el espacio para demasiadas explicaciones. Pero con esto quedaría resuelto tu problema.
Espero te sirva.
Saludos
Te invito a visitar http://clasesexcel.com/ para obtener más trucos e información sobre Excel y suscribirte al boletín gratuito.
hola,
no entiendo cuando dice que debo colocar el código fuera de todo evento, gracias.