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.
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
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:
Application.ScreenUpdating = False
y para activar nuevamente la actualización se coloca la siguiente linea
Application.ScreenUpdating = True