Cerrar formulario y terminar ejecución
Hola a todos.
Os cuento lo que me pasa de la mejor manera que pueda.
Tengo un excel con dos pestañas. Lo tengo codificado para que cuando el usuario le de a la POR de salir, le aparezca un formulario con tres botones: Guardar como, Guardar y Cancel, además de la POR para salir del propio formulario.
Los botones los tengo codificados para que cada uno haga lo que le corresponde y la POR del formulario, la manera que he tenido de 'anularlo' ha sido con el siguiente código:
Private Sub UserForm_QueryClose(cancel As Integer, CloseMode As Integer)
MsgBox "Por favor, utilice los botones del formulario para cerrar el documento.", vbInformation, "Opción no permitida"
cancel = True
Application.DisplayAlerts = False
End Sub
Ahora os cuento dónde tengo el problema:
En el momento de pulsar el botón 'Cancelar', lo que quiero es que se cierre el formulario y excel le devuelva el control al usuario y no haga nada más, es decir, que la hoja donde estuviera el usuario antes de dar a la POR le aparezca como si nada hubiera pasado. Es decir, lo que quiero es que si el usuario le da a salir y al salirle el formulario ve que no quiere 'grabar' ni 'grabar como' que pueda cancelar la operación.
Hasta aquí parece la cosa fácil, ¿no?... Pues bien, cuando pulso el botón 'Cancelar' que tengo condificado con el siguiente código:
Private Sub CommandButton1_Click()
cancel = True
Application.DisplayAlerts = False
Formulario_guardar.Hide
End Sub
Y ahora viene el problema¡... Cuando debugando la ejecución, cuando hace el 'end sub' del botón, vuelve al 'end sub' del evento donde se invocó al formulario, y al llegar a este 'end sub' es cuando salta el mensaje de excel de:
Do you want to save changes you made to '.........'?
Vamos, el mensaje típico de si deseas guardar los cambios.
Este es el mensaje que no quiero que me aperezca¡¡¡ y no consigo controlarlo con la intrucción 'Application.DisplayAlerts = False'...
Pufff, entiendo que es difícil ver el tema... Pero es que no sé por donde salir... No entiendo el porqué me sale el mensajito...
Otra cosa que he probado ha sido el poner el END... Quedando el código del botón 'Cancelar' del formulario con el código:
Private Sub CommandButton1_Click()
cancel = True
Application.DisplayAlerts = False
End
End Sub
Pero lo mismo, cuando ejecuta la línea de 'end sub' me aparece el mensajito de querer guardar los cambios...
El 'ActiveWindow.Close' no me vale porque me cierra el documento entero y yo lo que quiero es que me cierre sólo mi formulario.
Gracias, compañeros¡.
Os cuento lo que me pasa de la mejor manera que pueda.
Tengo un excel con dos pestañas. Lo tengo codificado para que cuando el usuario le de a la POR de salir, le aparezca un formulario con tres botones: Guardar como, Guardar y Cancel, además de la POR para salir del propio formulario.
Los botones los tengo codificados para que cada uno haga lo que le corresponde y la POR del formulario, la manera que he tenido de 'anularlo' ha sido con el siguiente código:
Private Sub UserForm_QueryClose(cancel As Integer, CloseMode As Integer)
MsgBox "Por favor, utilice los botones del formulario para cerrar el documento.", vbInformation, "Opción no permitida"
cancel = True
Application.DisplayAlerts = False
End Sub
Ahora os cuento dónde tengo el problema:
En el momento de pulsar el botón 'Cancelar', lo que quiero es que se cierre el formulario y excel le devuelva el control al usuario y no haga nada más, es decir, que la hoja donde estuviera el usuario antes de dar a la POR le aparezca como si nada hubiera pasado. Es decir, lo que quiero es que si el usuario le da a salir y al salirle el formulario ve que no quiere 'grabar' ni 'grabar como' que pueda cancelar la operación.
Hasta aquí parece la cosa fácil, ¿no?... Pues bien, cuando pulso el botón 'Cancelar' que tengo condificado con el siguiente código:
Private Sub CommandButton1_Click()
cancel = True
Application.DisplayAlerts = False
Formulario_guardar.Hide
End Sub
Y ahora viene el problema¡... Cuando debugando la ejecución, cuando hace el 'end sub' del botón, vuelve al 'end sub' del evento donde se invocó al formulario, y al llegar a este 'end sub' es cuando salta el mensaje de excel de:
Do you want to save changes you made to '.........'?
Vamos, el mensaje típico de si deseas guardar los cambios.
Este es el mensaje que no quiero que me aperezca¡¡¡ y no consigo controlarlo con la intrucción 'Application.DisplayAlerts = False'...
Pufff, entiendo que es difícil ver el tema... Pero es que no sé por donde salir... No entiendo el porqué me sale el mensajito...
Otra cosa que he probado ha sido el poner el END... Quedando el código del botón 'Cancelar' del formulario con el código:
Private Sub CommandButton1_Click()
cancel = True
Application.DisplayAlerts = False
End
End Sub
Pero lo mismo, cuando ejecuta la línea de 'end sub' me aparece el mensajito de querer guardar los cambios...
El 'ActiveWindow.Close' no me vale porque me cierra el documento entero y yo lo que quiero es que me cierre sólo mi formulario.
Gracias, compañeros¡.
1 respuesta
Respuesta de Carlos soloffice
1