Cerrar ventana

12/06/2005 - 20:56 por diegoar | Informe spam
hola, como puedo hacer para que la X que me aparece en el tope de la
ventana deje de hacerlo, es decir, que para cerrar la ventana el
usuario atraves de un boton que yo indico para tal fin.-

gracias

Preguntas similare

Leer las respuestas

#1 Emilio
12/06/2005 - 21:08 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje y dinos si te
sirvió o no la respuesta dada. Muchas gracias
Hola !
tienes un ejemplo en
http://www.mvp-access.com/emilio/Ex...rExcel.zip

Saludos a desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com

http://www.mvp-access.com/foro
http://www.mvp-access.com/emilio

Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/defaul...newsreglas

"diegoar" escribió en el mensaje
news:
hola, como puedo hacer para que la X que me aparece en el tope de la
ventana deje de hacerlo, es decir, que para cerrar la ventana el
usuario atraves de un boton que yo indico para tal fin.-

gracias

Respuesta Responder a este mensaje
#2 Héctor Miguel
13/06/2005 - 06:56 | Informe spam
hola, diego !

... que la X que me aparece en el tope de la ventana deje de hacerlo
... que para cerrar la ventana el usuario atraves de un boton que yo indico para tal fin



si lo [unico] que necesitas es la 'funcionalidad' de que el usuario 'tenga que...' salir segun [tu] 'lo permitas'...
[solo] se necesitan 3 'instrucciones' en tu proyecto de macros...
1) declarar una variable 'publica' de tipo 'boolean' [verdadero/falso]
[de preferencia] en un modulo de codigo 'normal' [para que sea 'transparente' para todo modulo]
2) una linea que establezca dicha variable en 'verdadero' [o falso segun como/cuando la quieras utilizar]
3) una linea en el evento '_beforeclose' del libro para que 'mientras la variable no lo permita'... no se pueda salir :))

te paso un ejemplo al final
si cualquier duda... comentas?
saludos,
hector.

-linea 1- en un modulo de codigo 'normal' ==Public SePuedeSalir As Boolean ' al abrirse el libro se establece por omision en FALSO ;)
-linea 2- en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not SePuedeSalir Then Cancel = True
End Sub
-linea 3- en el modulo de codigo de la hoja 1 ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SePuedeSalir = (Target.Address = "$D$10")
End Sub

-> [p.e.] si quisieras 'dar permiso' SOLO cuando se seleccione unica/exclusivamente la celda 'D10' <-
-> obviamente puedes modificar el valor de la variable desde cualquier linea y procedimiento necesario
[p.e. como primera linea en el procedimiento que asignes al boton para tal fin] ;)
[creo que] 'el resto' ES... 'maquillaje'... llamadas a un buen numero de API's... y...
[a menos que lo consideres 'indispensable']... con el consiguiente 'crecimiento' del codigo :-(
Respuesta Responder a este mensaje
#3 diegoar
13/06/2005 - 11:36 | Informe spam
temo que no me explique bien, lo que solo quiero es que cuando aparece
un form, yo tengo en el tope superior derecho del form la X que me deja
salir del form. Yo es esto lo que no quiero, o bien, que no exista esa
X en el tope del form o que no tenga funcionalidad, pero siempre
hablando del form...
disculpen mi mala expresion...
muchas gracias
Respuesta Responder a este mensaje
#4 Héctor Miguel
13/06/2005 - 23:50 | Informe spam
hola, diego !

... cuando aparece un form... en el tope superior derecho... la X... me deja salir del form
... quiero, o bien, que no exista esa X en el tope del form o que no tenga funcionalidad [...]



solo te falto 'acotar' que se trataba de formularios :)) sin embargo [y hasta donde se]...
-> hablando de 'prohibiciones/seguridad/... etc.' en una aplicacion tan... 'amigable' como es excel...
requiere determinar 'hasta que nivel' son las necesidades/pretenciones/nivel_usuarios... etc. :-(
-> ademas de la 'X'... otras opciones que tiene el usuario para 'salir/terminar/...' un codigo/form/... en ejecucion...
-> presionar la tecla {escape}... -> presionar las teclas {alt}+{F4}... -> combinar las teclas {ctrl}+{pausa}... etc.
-> algunas alternativas [que pudieran ser incluso 'combinables'] con sus pros y contras son las siguientes...

decide cual/es aplica/n de la mejor manera a tus intenciones y... si cualquier duda... comentas?
saludos,
hector.
=1) la mas sencilla es usar el evento '_queryclose' en el modulo del formulario [p.e.]
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
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) usando llamadas a algunas API's de windows [p.e.]
copia las siguientes lineas en el modulo de codigo ->del formulario<. ==Private Declare Function BuscarVentana _
Lib "User32" Alias "FindWindowA" ( _
ByVal Clase As String, ByVal Nombre As String) As Long
Private Declare Function ObtenerMenu _
Lib "User32" Alias "GetSystemMenu" ( _
ByVal Ventana As Long, ByVal Revertir As Long) As Long
Private Declare Function QuitarMenu _
Lib "User32" Alias "RemoveMenu" ( _
ByVal Menu As Long, ByVal Posicion As Long, ByVal Estado As Long) As Long
Private Sub UserForm_Initialize()
EsteFormulario = BuscarVentana(vbNullString, Me.Caption)
EsteMenu = ObtenerMenu(EsteFormulario, False)
QuitarMenu EsteMenu, 1, &H400& Or &H1000&
QuitarMenu EsteMenu, 2, &H400& Or &H1000&
QuitarMenu EsteMenu, 4, &H400& Or &H1000&
End Sub
___
=> las 'posibilidades' de salir/terminar/... con el formulario son las mismas que con el 'truco' anterior...
MAS.. [agrega que]... puede tambien utilizar la combinacion {alt}+{F4} :-((
[a menos que decidas 'conservar' el truco del '_querycolse'] :))
=> 'ventajas adicionales'... el usuario no podra 'mover/cambiar/...' la posicion del formulario ;)

3) si el usuario presiona {ctrl}+{pausa} o... {escape} estando una macro 'en ejecucion'...
se produce un error 18 en tiempo de ejecucion =>operacion cancelada por el usuario<y para que sea 'detectado' por esa propiedad, se debe incluir un 'manejo de errores' en el codigo
prueba con la propiedad EnableCancelKey [es del objeto Application]
=>revisa en la ayuda [vba] los comentarios acerca de 'cuidados especiales' en su uso<si [solamente] quieres 'desaparecer' el dialogo de la 'pregunta-confirmacion'... [p.e.]
' ... otras lineas de tu codigo ...
On Error GoTo Ver_Error
Application.EnableCancelKey = xlErrorHandler
' ... otras lineas de tu codigo ...
Ver_Error:
If Err <> 18 Then Resume ' si el usuario 'intento' detener el codigo... el codigo... NO 'le hace caso' :))
' ... otras lineas de tu codigo ...
Respuesta Responder a este mensaje
#5 diegoar
14/06/2005 - 00:38 | Informe spam
hector, sos un grande!!!!
use la primera de tus opciones y anduvo al pelo!!!!!
mil gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida