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 __
Mostrar la cita
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__
Mostrar la cita
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 __
Mostrar la cita
3) esta parte de tu consulta no es clara (la frase esta inconclusa) -???-

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

__ 5 __
Mostrar la cita
5) comentado en el punto 2) ;)

saludos,
hector.

Preguntas similares