Macro para minimizar userform altera su función

Nuevamente molestándote ya logre solucionar todo acerca de mi app, todo funciona bien pero cuando coloco la macro para minimizar el userform del menu principal sucede algo raro, deja de funcionar el botón de cierre es decir me manda un error y no me deja cerrar la aplicación. Anexo códigos.

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

Link del error https://mega.nz/#!nZZ20CqL!95m-CF8mlAqrV_r3AGqCo4gyGNOTxTq-_nlgo6Tb6_s 

2 Respuestas

Respuesta
1

El problema es en las variables, ya que tienes activa la opción de "Option Explicit", donde tienes que declarar todas las variables que están dentro del código, entonces para solucionar esto puedes borrar esa opción o desactivarla en la barra del menu VBA, Herramientas, Opciones y dentro de la ventana estará marcada la opción "Requerir declaración de variables", la puedes desmarcar o dejarla tal cual. Pero cada vez que insertes un Userform, Modulo etc, y cuando quieras escribir un código, aparecerá "Option Explicit", y en la imagen que compartes tienes que declarar las variables H y u, algo así:

Dim H as String
Dim u as Integer

Y el resto del código.

Gracias amigo por tu pronta respuesta. Con esto quedó solucionado. Tu sabrás como se puede hacer para que a la hora de minimizar el userform se vaya a la barra de tarea de Windows como cualquier programa lo hace.

Aunque es otra pregunta, déjame decirte que tengo un código que hace o simula tal evento, no recuerdo muy bien si es eso lo que hace. Pero hay un problema, que de los cientos de archivos que hay en mi pc no sé donde está XD. Mejor escríbeme a mi correo y te informo si lo tengo o no.

[email protected]

Respuesta
2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas