Evento Workbook BeforeClose
Microsoft Excel permite predefinir algunas acciones populares que lo haría en diferentes objetos como (hoja de cálculo, libro, botones, etc), estas acciones se denominan Eventos. Por ejemplo: la activación de una hoja de cálculo es un evento, el cierre de un libro es un acontecimiento, cuando hacemos clic en un botón es un evento. Cada objeto tiene su propia lista de eventos, los libros de Microsoft Excel tiene una lista de eventos como son (cerrar libro o libro abierto), las hoja de cálculo tiene una lista de eventos que son(activar la hoja de trabajo o editar una celda).
Si se realiza un evento, como puede ser, el cierre de un libro, el código deseado puede ser activado. Si se requiere guardar un libro automáticamente cuando se cierra un libro o quizás se quiera un cuadro de mensaje de bienvenida para que aparezca cuando se abre un libro de trabajo. Los Eventos son procedimiento Sub (comienza con Private Sub y termina con End Sub) y se genera de manera automática, con un nombre específico, se puede llamar a un procedimiento Sub o escribir su propio código en el código de evento.
¿Cúando se produce el Evento Workbook BeforeClose?
Workbook_BeforeClose es un evento que se desencadena cuando un libro de Microsoft Excel es cerrado. Por ejemplo, se puede utilizar Workbook_BeforeClose Evento para salvar libro, o inicializar el valor (reponer el valor inicial anulada por el usuario), De forma predeterminada, Microsoft Excel preguntaría si desea guardar el archivo antes del cierre si se han realizado cambios.
En ese caso, el procedimiento de evento se dispara antes que este cuadro de mensaje.
Sintaxis de Excel Workbook_BeforeClose Evento
Private Sub Workbook_BeforeClose (Cancel As Boolean)
Cancel .- El valor por defecto de Cancel es False, eso significa que el libro se cerrará de forma normal después Procedimiento del evento se dispara. Si se establece como True se indica que no se desea cerrar el libro y ningún cuadro de mensaje le pedirá guardar el archivo.
Evento Workbook Deactivate
Hay otro evento llamado Workbook_Deactivate, que se activa cuando se cierra un libro o cambiar a otro libro. Tanto Workbook_BeforeClose y Workbook_Deactivate se pueden activar cuando un libro está cerrado, pero si ambos están presentes en un libro, Workbook_BeforeClose se disparará primero.
- Ejemplo de Excel Workbook_BeforeClose Evento
- Presione ALT + 11 para entrar al Editor de Visual Basic.
- Haga doble clic en ThisWorkbook -> Seleccionar libro -> Seleccionar BeforeClose
(Para mayor visualización de la imagen, hacer click en la misma)
Inserte su código entre Private Sub y End Sub. En el siguiente ejemplo, cuando se cierra el libro, un cuadro de mensaje le pedirá confirmar si desea dejar el libro de trabajo o No. Si hace clic en "OK", el libro va a guardar y cerrar. Si "Cancelar", el libro no se cerrara.
Código correspondiente al mensaje:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
salir = MsgBox("¿Está seguro de que quiere salir?", vbOKCancel)
If salir = vbOK Then
ThisWorkbook.Save
Else
Cancel = True
End If
End Sub
11/12/2016 a las 6:14 am
Excelente
05/04/2020 a las 9:35 pm
Muy bien explicado. Muchas gracias.
Lo malo de Excel es que ya casi cualquier persona sabe el truco para desproteger hojas sin saber la contraseña
Hay alguna forma de que al abrir el archivo pueda programar algo para detectar si están desprotegidas las hojas para volverlas a proteger?
Tal vez un
if worksheets("hoja").Protected=false then worksheets("hoja").Protect
por ejemplo?
Y otro problema es que los macros no van a ejecutarse si el usuario de la hoja no los habilita. Pero yo podría ocultar las hojas con
Worksheets("hoja").Visible = xlSheetVeryHidden
y colocar un botón para que el usuario tenga que presionarlo para hacerlas visibles y por fuerza deberá activar macros o no podría usar mi archivo.
Saludos
14/01/2022 a las 10:55 am
Si proteges una hoja ya protegida no ocurre nada, así que ejecuta una macro al abrir de manera que se protejan las hojas.