Voy a comenzar un proyecto nuevo en excel con VB pero en el formulario no me aparecen ni el boton maximizar ni minimizar alguien me podria ayudar.
1 Respuesta
Respuesta de Abraham Valencia
1
1
Abraham Valencia, Experto en ofimatica, desarrollador de aplicaciones en VB y VB
Esos "botones" no vienen por defecto en los userform de VBA. Debes crearlos usando funciones de la APIde windows: 'Code to add a miminise and maximise button to a VBA userform 'Daniel Klann 13th June 2002 'Windows API functions we need to use to achieve this Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) 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 'Constants used within the API functions above 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 'Get the Windows handle of the userform - required for the API calls If Application.Version < 9 Then lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption) 'For Excel 97 Else lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption) 'For Excel 2000 onwards End If 'Get the current style of the userform lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE) 'Create a new style with max and min buttons lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX 'Apply it to the userform SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle End Sub OJO, esto va en el modulo de userform Abraham
Hola Abraham lo debo colocar al iniciar el formulario? lo intente y no me funciona Carolina
Pues tal y como te indico al final del anterior mensaje (OJO...), todo va en el modulo del userform... como vez se usa el evento "Initialize" del userform, y las declaraciones de variables deben ir en la parte superior de dicho modulo Abraham
1 comentario
No me sale. Sale un mensaje diciendo que el código se debe actualizar para usar en sistemas de 64 bits. Revise y actualice las instrucciones Declare, y a continuación, márquelas con el atributo PtrSafe. Ayuda :( - César Carmona
No me sale. Sale un mensaje diciendo que el código se debe actualizar para usar en sistemas de 64 bits. Revise y actualice las instrucciones Declare, y a continuación, márquelas con el atributo PtrSafe. Ayuda :( - César Carmona