Deshacer "No cerrar formulario con X"

09/01/2008 - 15:51 por Mauricio | Informe spam
Buen Día al grupo,
Mi workbook al abrir ejecuta un formulario ...el principal a este le puse el
código para no cerrar con X
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

If CloseMode = 0 Then
Cancel = True
End If
End Sub


si alguien quiere cerrar el formulario le puse un boton de cerrar ...pero
este cierra la aplicación...Application.quit
esto como metodo de proteger que editen mi workbookahora como hago yo
cuando quiera editar-hacer cambiosdebo abrir de algún modo? debo
implementar otro metodo ?
Gracias de antemano
Mauricio

Preguntas similare

Leer las respuestas

#1 Ivan
09/01/2008 - 17:08 | Informe spam
hola Mauricio,

If CloseMode = 0 Then




        Cancel = True

como hago yo cuando quiera editar-hacer cambios<<<



una posibilidad seria dar la opcion de editar previa peticion/
introduccion de una clave/contraseña

a grosso modo, podria ser algo asi=>

incluyes, pej.=>

a) un textbox en el userform (para el ej. le llamaremos
'txtContraseña')

[si lo prefieres, podrias optar por diversas opciones, pej. en vez del
textbox poner un boton que llame a un inputbox o a otro formulario
diseñado para el efecto o que activara mostrara el textbox, etc]

en el caso de optar por el textbox puedes elegir un tipo de caracter
'ocultador' en su propiedad PasswordChar y un boton 'cmdEditar' para
confirmar la introduccion de la contraseña

b) a nivel de el modulo del formulario declaras una variable boolean y
si quieres controlar un nº maximo de intentos tambien una variable
tipo Byte (pej)

Dim Editando as Boolean, NroVeces as Byte

c) Declaras tambien una constante con tu contraseña y si quieres uno
con el maximo de repeticiones

Const Clave as String = "Tu_C1oNt2raS4eña"
Const Max_Intentos as Byte = 3


d) en el boton editar (o en el mismo de cerrar aunque con algunas
variaciones), que usarias tras haber introducido la clave, podrias
poner algo tipo

Private Sub cmdEdita_Click()
if txtContraseña = Clave then unload me: exit sub
NroVeces =NroVeces + 1
if nroVeces > Max_Intentos then
Msgbox "Se ha excedido el nº de intentos permitido"
Call TuBotonDeCerrar_Click
end if
End Sub

bueno, es solo por darte una idea de una posibilidad, pero ten c
uidado si intentas aplicarlo tal cual esta escrito, pues esta hecho
aqui y puede haber algun error, pero mas o menos creo que la idea se
ve por donde iria

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Ivan
09/01/2008 - 17:13 | Informe spam
hola de nuevo,

al final, como veras rapido, la variable boolean (Editando) no es
necesaria en este caso pero se me ha quedado de clavo. Puedes
eliminarla

sorry

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Héctor Miguel
09/01/2008 - 22:32 | Informe spam
hola, Mauricio !

Mi workbook al abrir ejecuta un formulario ...el principal a este le puse el codigo para no cerrar con X
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
End If
End Sub


si alguien quiere cerrar el formulario le puse un boton de cerrar ...pero este cierra la aplicacion...Application.quit
esto como metodo de proteger que editen mi workbookahora como hago yo
cuando quiera editar-hacer cambiosdebo abrir de algun modo? debo implementar otro metodo ?



op1: (supongo que) puedes dejar que el userform "haga lo suyo" y (estimo que) en algun momento habra de "desaparecer" -?-

op2: prueba abriendo el workbok SIN "darle permiso" de que ejecute sus macros :-((

op3: prueba manteniendo pulsada la tecla {shift/mayusc} durante el proceso de apertura (aun dando permiso a las macros)

op4: provee alguna "salida de emergecia" (previo password) como te indica Ivan ;)

op_n: (si comentas algun detalle que se pudiera haber quedado "en el tintero") ?

saludos,
hector.
Respuesta Responder a este mensaje
#4 Mauricio
10/01/2008 - 23:25 | Informe spam
Muchas gracias por la ayuda ...sin embargo reuniendo ideas y aunque no muy
esteticopuse un boton llamado EDICION el cual activa un inputbox que pide
contraseña la cual al ser válida cierra el form (form.hide) y entonces tengo
acceso a la hoja de excel activa en ese momento y desde ahi activo las barras
de comando y la proteccion del libro...

Gracias
Mauricio
Respuesta Responder a este mensaje
#5 Ivan
10/01/2008 - 23:53 | Informe spam
hola Mauricio

... la cual al ser válida cierra el form (form.hide) ...<<<







solo un comentario: con Hide no estas 'cerrando' el formulario, o al
menos no estas descargandolo de memoria, tan solo estas
'ocultandolo'.

Salvo que por algun motivo especial te interese mantener el fomulario
en segundo plano (pej. para poder acceder a alguno de los valores que
se hayan cargado en el), creo que suele ser mas conveniente
descargarlo con Unload Formulario.

Asi liberas memoria y no corres el riesgo de dejar/tener una instancia
del formulario 'cargada' al cerrar el libro

es solo una opinion, aunque no me hagas caso del todo

en cualquier caso me alegro que te hayas apañado

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida