Autor Tema: Minimizar y maximizar formularios VBA en Excel y otras cosas utiles  (Leído 22021 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado wilian

  • Sv Member
  • ***
  • Mensajes: 371
Minimizar y maximizar formularios VBA en Excel

Normalmente cuando se tiene en ejecución un userform en excel no se puede trabajar en las hojas de excel hasta que se cierra el userform. Este codigo lo encontre en una web y agrega los botones de minimizar y maximizar a los userform.

Código: [Seleccionar]
Option Explicit
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
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
    If Application.Version < 9 Then
        lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption)
    Else
        lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
    End If
    lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub

se le ingresa al userform que se ha creado y en propiedades se le marca como "False" la llamada "ShowModal"

Y con esto ya se pueden minimizar los userform y trabajar en las hojas de excel.

Edito: Aqui esta la web de donde lo saque
Código: [Seleccionar]
http://foros.emagister.com/tema-botones_de_maximizar_y_minimizar_en_formulari-12890-768694-1.htm



Desactivar actualización de la pantalla

Cuando en una macro o programa hacemos que este seleccione celdas para modificar formatos, para copiar, o movemos el cursor, etc...etc... se mira en la pantalla paso a paso lo que se va haciendo y simplemente no se ve como un trabajo muy profesional.

Pues la siguiente linea de codigo para quien no la conozca nos permite desactivar la actualización de la pantalla y evitar que se vea el cursor moviendose o evitar que se vea cuando se mueven de una hoja a otra, además algunos dicen que en ocasiones mejora la velocidad con la que se ejecutan los procedimientos.    

Para desactivar la actualización de la pantalla se coloca la siguiente linea:
Código: [Seleccionar]
Application.ScreenUpdating = False
y para activar nuevamente la actualización se coloca la siguiente linea
Código: [Seleccionar]
Application.ScreenUpdating = True
« Última Modificación: agosto 30, 2009, 09:45:31 am por wilian »
     ¡¡¡CREA DIVERTIDOS MEMES!!!      SUPER MEME 2 en Play Store

Desconectado Esgrimidor

  • MiembrosReales
  • *
  • Mensajes: 32
Re: Minimizar y maximizar formularios VBA en Excel
« Respuesta #1 : agosto 19, 2009, 04:16:00 pm »
Muchas gracias Wilian. Procuraré aplicarlo.


Desconectado Kordero

  • Sv Full Member
  • *
  • Mensajes: 755
  • *~+ Dont mess with a Psycho+~*
Re: Minimizar y maximizar formularios VBA en Excel
« Respuesta #2 : agosto 28, 2009, 05:55:09 pm »
Vaya tiempo de no entrar a  esta pagina hahahaahaha, y yo buscando esa info estaba y de la nada apareci aqui, muy bueno el aporte me funciono pero hay que remover Option Explicit del comando para que funcione bien, saludos

Desconectado Syntek

  • Sv Jr.
  • **
  • Mensajes: 81
Re: Minimizar y maximizar formularios VBA en Excel
« Respuesta #3 : agosto 28, 2009, 10:24:14 pm »
A mi me funcionó con el Option Explicit pero declarando todas las variables en el código del formulario  :roll: