Evento al cerrar Formulario

22/12/2008 - 17:07 por Luis | Informe spam
Qué tal! foro ante todo felices fiestas anticipadas... tengo una
consulta y me gustaría mucho que me ayuden.. Resulta que tengo dos
formularios: el 1ero me sirve para ingresar un usuario y una
contraseña a partir de los cuales se abre el formulario 2 con ciertas
restricciones dependiendo del usuario. Existe un usuario
administrador, el cual dentro del 2do formulario al presionar un botón
puede acceder a las hojas y código del libro. Mi intención es que
ningún usuario que no sea el administrador pueda salir de ambos
formularios (me preocupa sobre todo la `[x] de salir que aparece en la
esquina superior derecha de todo formulario). He escrito el siguiente
código para el evento close de ambos:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
Application.DisplayFullScreen = False
Worksheets("Hoja1").Visible = xlSheetVeryHidden
Worksheets("Hoja2").Visible = xlSheetVeryHidden
Worksheets("Hoja3").Visible = xlSheetVeryHidden
Unload Me
ThisWorkbook.Close SaveChanges:=True
Application.Quit
End Sub

Pero este código hace que cuando el administrador intente acceder a
las hojas con el botón que les comentaba (que únicamente contiene el
famoso 'unload me').

Como otra opción pensaba en 'desaparecer' la dichosa [x] pero no se
como hacerlo =( , de tal manera que todos los usuarios sólo puedan
salir presionando alguno de los botones que están dentro de los
formularios..si ustedes me podrían ayudar les agradecería muchisimo xq
es urgente!

Y una consulta adicional mi intención como podrán ver en el código que
expuse, es cerrar por completo la aplicación, pero siempre me queda la
ventana de excel (sin ningún libro) abierta.

Muchisimas Gracias!!


Saludos!!
 

Leer las respuestas

#1 Héctor Miguel
23/12/2008 - 03:06 | Informe spam
hola, Luis !

__ 1 __
... tengo dos formularios: el 1ero me sirve para ingresar un usuario y una contrasena
a partir de los cuales se abre el formulario 2 con ciertas restricciones dependiendo del usuario.
Existe un usuario administrador, el cual dentro del 2do formulario al presionar un boton
puede acceder a las hojas y codigo del libro.
Mi intencion es que ningún usuario que no sea el administrador pueda salir de ambos formularios
(me preocupa sobre todo la `[x] de salir que aparece en la esquina superior derecha de todo formulario).



1) si SOLO quieres evitar que el usuario cierre/cancele el formulario SIN tu permiso...
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode = vbFormControlMenu
End Sub

=> el usuario SOLO podra' salir/terminar/... el formulario a traves de la salida que TU le proveas en el codigo
o... (solamente) pulsando la combinacion {ctrl}+{pausa} =>interrupcion del codigo<
__ 2__
He escrito el siguiente codigo para el evento close de ambos:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Application.DisplayFullScreen = False
Worksheets("Hoja1").Visible = xlSheetVeryHidden
Worksheets("Hoja2").Visible = xlSheetVeryHidden
Worksheets("Hoja3").Visible = xlSheetVeryHidden
Unload Me
ThisWorkbook.Close SaveChanges:=True
Application.Quit
End Sub



2) aqui tienes un detalle... cuando cierras el libro con la instruccion:
-> ThisWorkbook.Close SaveChanges:=True
sucede que la siguiente linea...
-> Application.Quit
-> YA NO SE EJECUTA (debido a que el libro ya se cerro)

solucion ?... solo invierte el orden de las lineas :D

__ 3 __
Pero este codigo hace que cuando el administrador intente acceder a las hojas con el boton que les comentaba
(que unicamente contiene el famoso 'unload me').



3) esta parte de tu consulta no es clara (la frase esta inconclusa) -???-

__ 4 __
Como otra opcion pensaba en 'desaparecer' la dichosa [x] pero no se como hacerlo =(
de tal manera que todos los usuarios solo puedan salir presionando alguno de los botones
que estan dentro de los formularios..si ustedes me podrían ayudar les agradecería muchisimo xq es urgente!



4) comenta si te es suficiente con la opcion 1 -?-

__ 5 __
Y una consulta adicional mi intencion como podran ver en el codigo que expuse
es cerrar por completo la aplicacion, pero siempre me queda la ventana de excel (sin ningun libro) abierta.



5) comentado en el punto 2) ;)

saludos,
hector.

Preguntas similares