Si bien en entradas anteriores (Eventos de Hoja Excel) ya vimos algunos ejemplos de macros colocadas a nivel de Libro, a continuación veremos los principales eventos para el objeto Libro, es decir aquellas macros que colocamos en el objeto ThisWorkBook.
OPEN: se ejecuta al abrir un libro. Aquí colocaremos las instrucciones que nos mostrará el libro con el formato deseado: qué barras quitamos, cómo ver la pantalla, qué hoja mostramos primero, qué hojas ocultamos, y así con el resto.
Ejemplo:
Private Sub Workbook_Open()
Sheets("MENU").Select 'hoja de inicio
[B3].Select
ActiveWindow.DisplayWorkbookTabs = False 'sin pestañas
Application.DisplayFormulaBar = False 'sin barra fórmula
Userform1.Show 'mostrar un Userform
End Sub
ACTIVATE: se ejecuta al activar un libro. Al abrir el libro ya se lo está activando. Pero aquí colocaremos las instrucciones que necesitamos que se ejecuten al pasar de otro libro a éste que ya se encuentra abierto. Por ejemplo, mostrar una hoja que siempre está oculta y al entrar al libro la necesitamos hacer visible para ejecutar algún proceso.
Ejemplo:
Private Sub Workbook_Activate()
Sheets("Resultados").Visible = True
End Sub
DEACTIVATE: se ejecuta cuando desactivamos el libro, ya sea para pasar a otro o para cerrarlo. Siguiendo el ejemplo anterior, aquí podríamos volver a ocultar la hoja que mostramos al activarlo.
NOTA: las instrucciones se ejecutan estando ya en el nuevo libro activado. Por lo tanto hay que indicarle el nombre del que se acaba de desactivar para realizar alguna acción allí.
Ejemplo:
Private Sub Workbook_Deactivate()
Workbooks("RESUMEN
ANUAL.xlsm").Sheets("Resultados").Visible = xlVeryHidden
MsgBox "Acabas de salir del libro RESUMEN"
End Sub
BEFORE PRINT: se ejecuta al llamar a la opción de Impresión. En este evento se puede indicar cuál será la impresora a utilizar, la cantidad de copias. También se puede evitar la impresión de alguna hoja como en la siguiente macro:
Ejemplo:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'seleccionar la impresora
'impedir que cierta hoja se imprima
If ActiveSheet.Name = "Resultados" Then
Cancel = True
End Sub
BEFORE SAVE: se ejecuta al guardar el libro. Aquí podríamos indicar el guardado de alguna copia en otra subcarpeta. También es conveniente dejar el libro con las mismas medidas de seguridad que veremos en el evento siguiente.
Ejemplo:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As
Boolean, Cancel As Boolean)
'guardar además una copia
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "/COPIAS/" & Format(Now, "hh-mm-ss") & "_" & ActiveWorkbook.Name
End Sub
BEFORE CLOSE: se ejecuta al cerrar el libro. Aquí podríamos dejar las mismas instrucciones que en el guardado si no desarrollamos el evento BeforeSave (hacer una copia en otra subcarpeta).
NOTA: Es conveniente dejar el libro con las mismas medidas de seguridad que establecemos en el evento Open. Es decir que si al abrir ocultamos ciertas hojas, debiéramos dejarlas también ocultas aquí en este evento como también en el de guardado (Save). Considerar que al abrir un libro bien podría abrirse sin habilitar las macros y por lo tanto no se ejecutarán las instrucciones de Open.... lo que dejaría visibles aquellas hojas a proteger.
Ejemplo:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ocultar algunas hojas
Sheets("Resultados").Visible = xlVeryHidden
End Sub
NEWSHEET: se ejecuta al insertar una nueva hoja. Ya sea que presionemos el botón + desde las pestañas como si ejecutemos una instrucción agregando una nueva hoja. Podemos indicarle por ejemplo la ubicación.
Ejemplo:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
ActiveSheet.Move Before:=Sheets("Enero")
End Sub
Los eventos iniciados con SHEET: son las mismas macros que colocaríamos en los objetos HOJA. Pero que tienen un alcance a todas las hojas del libro, exceptuando las que no requieran de estos procesos.
Ejemplo:
Private Sub Workbook_SheetChange(ByVal Sh As Object,
ByVal Target As Range)
If ActiveSheet.Name <> "PORTADA" And
ActiveSheet.Name <> "MENU" Then
Call
procesoHoja
End If
End Sub
IMPORTANTE: si se programa un evento iniciado con Sheet en el objeto ThisWorkBook no debe ser colocado en el objeto HOJA si se trata del mismo proceso.
Acceso al VIDEO N° 48.
No hay comentarios.:
Publicar un comentario