Desactivar el botón "X" del Userform para cerrar

Tengo un formulario de contraseñas que se ejecuta cuando abro el libro y funciona muy bien, lo que quisiera es que no lo puedan cerrar con el botón rojo con una "X" que aparece en la parte superior derecha y obligar a la persona que digita que manipula el archivo a cerrarlo desde un botón que ya tengo programado para tal fin.

1 respuesta

Respuesta
1
Lo que tienes que hacer es controlar el momento en que se cierra el formulario y ver si se ha pulsado o no el botón de cerrar (en caso contrario es que se cierra con "X").
Usa este código:
Option Explicit
Dim snBotonCerrar As Boolean
Private Sub btnCerrar_Click()
    snBotonCerrar = True
    Unload Me
End Sub
Private Sub UserForm_Click()
    snBotonCerrar = False
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If Not snBotonCerrar Then
        MsgBox "Usa el botón de cerrar para salir de este formulario"
        Cancel = True
    End If
End Sub
Como verás, al pulsar el botón marco la variable "snBotonCerrar" y cierro el formulario.
En el evento 'al cerrar' del formulario verifico esa variable y... si no está activa significaría que han usado el "X", doy un mensaje y cancelo. Si está activa... se cerraría y se terminó el problema.
Muchas gracias, muy interesante tu respuesta pero intente hacerlo funcionar y me quedó grande, siempre me aparecía el mensaje que colocaste en el MsgBox. Es lo siguiente, en el formulario que tengo se autoejecuta cuando abro el archivo y muestra los campos de "usuario", "clave", "nueva clave" y "repita nueva clave", y tengo tres botones "Ingresar", "Cambiar Clave" y "Cancelar". Lo que hacen los bones de claves es validar las claves de ingreso junto con el usuario y si están bien permite entrar y trabajar en el libro y lo que hace el botón cancelar es cerrar el formulario y el libro. Todo funciona bien pero el usuario puede cerrar el formulario desde el botón "X" rojo y eso es lo que pretendo que no puedan realizar, que sólo se pueda ingreasar por medo de las claves o sólo tenga la opción de cerrar por el botón que hay asignado y que se cierra también el libro.
Muchas gracias por tu tiempo y esfuerzo.
Por lo que comentas, no sólo el botón de cancelar tiene que cerrar el formulario sino que tienes otros botones que, tras validar los datos, descargan el formulario para... supongo que después presentarán otro.
Si es así, lo único que tienes que hacer para que no te de el mensaje una vez validado el usuario/clave es incluir una línea que ponga "snBotonCerrar = True" justo delante de la que descargue el formulario "unload me" o "unload nombreDelFormulario"
Si quieres, y para que sea mejor legible, cambia todos los sitios la variable 'snBotonCerrar' por otra que se llame 'snPermitirCerrar'. El nombre de las variables deben ayudar a saber para qué se utilizan.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas