Curso Excel VBA y Macros – Cap. 39 – Eventos de Hoja o Worksheet
En este video tutorial toca tratar uno de los temas que más me gusta al momento de automatizar tareas con macros. Los Eventos nos ayudarán a tener mejores archivos, ya que podremos personalizar procedimientos que se ejecuten cuando suceda algo en el archivo o en los objetos de Excel.
Este es el segundo video tutorial de una serie de videos relacionados con los eventos:
- Eventos de Libro (Workbook).
- Eventos de Hoja (Worksheet).
- Eventos de Formulario (UserForm).
- Eventos no asociados a objetos.
- OnTime.
- OnKey.
- Eventos de Aplicación (Application).
Ver video Capítulo 39 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Qué son los eventos en VBA
Recordemos el modelo de objetos en Excel: Application > Workbook > Worksheet > Cell. Un evento es algo que le sucede a un objeto o cuando sucede una acción en nuestro archivo, por ejemplo:
- Al dar doble clic en una celda.
- Al cambiar el valor de celdas.
- Al abrir un archivo, al cerrar un archivo.
- Al dar clic en un botón.
- Al iniciar un formulario.
El muy importante conocer los eventos en Excel para escribir macros funcionales. Hay que considerar que los eventos no pueden ser generados por la grabadora de macros, aunque el código VBA generado por la grabadora sí que podemos usarlo en los eventos.
Es posible desactivar los eventos en nuestros archivos usando:
Application.EnableEvents = False
Eventos más comunes de Hoja (Worksheet)
Los eventos de Hoja se aplica a una hoja en particular. El código VBA de estos eventos se aloja en el mismo objeto de la hoja, solo hay que dar clic derecho sobre la etiqueta de una hoja y elegimos Ver código. La siguiente es una lista de los eventos más comunes que podremos aplicar cuando suceda una acción a nivel Hoja.
EVENTOS | DESCRIPCIÓN |
Worksheet_Activate | La hoja es activada. |
Worksheet_BeforeDelete | Antes de eliminar a hoja. |
Worksheet_BeforeDoubleClick | Antes de dar doble clic en una celda. |
Worksheet_BeforeRightClick | Antes de dar clic derecho sobre una celda. |
Worksheet_Calculate | La hoja es calculada o recalculada. |
Worksheet_Change | Cuando el valor de una celda es cambiado. |
Worksheet_Deactivate | La hoja es desactivada (se elige activa otra hoja). |
Worksheet_FollowHyperlink | Cuando un hipervínculo es seleccionado. |
Worksheet_PivotTableUpdate | Cuando una Tabla dinámica es cambiada o actualizada |
Worksheet_SelectionChange | Cuando se selecciona cualquier celda o rango. |
Evento Worksheet_Activate
Este evento se lanza al activar una hoja. La siguiente macro actualizará todas las Tablas dinámicas que se encuentren en una hoja.
Private Sub Worksheet_Activate() Dim TD As PivotTable For Each TD In ActiveSheet.PivotTables TD.RefreshTable Next TD End Sub
Evento Worksheet_BeforeDelete
Este evento se ejecuta al momento de eliminar una hoja. El siguiente código VBA evitará que una hoja sea eliminada. Recordemos que no podemos deshacer la acción de eliminar hojas. La macro realiza una copia antes de eliminar la hoja y así nos aseguramos de tener nuestra información a salvo.
Private Sub Worksheet_BeforeDelete() Dim MiNombre As String MiNombre = ThisWorkbook.ActiveSheet.Name ThisWorkbook.ActiveSheet.Name = VBA.Left(MiNombre, 30) & "#" ThisWorkbook.ActiveSheet.Copy _ After:=Sheets(ThisWorkbook.ActiveSheet.Index) ThisWorkbook.ActiveSheet.Name = MiNombre End Sub
Evento Worksheet_SelectionChange
Este evento se lanza al momento de seleccionar una o celda o rango de una hoja en particular. La siguiente macro nos ayudará a ordenar un rango en base a una celda que corresponda a un encabezado. Por ejemplo, si seleccionamos la celda A1, el rango se ordenará por la columna A en orde ascendente, de menor a mayor.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim MiRango As Range If Target.Column <= 6 And Target.Row = 1 Then Set MiRango = ActiveSheet.Range("A1").CurrentRegion MiRango.Sort Key1:=Cells(1, Target.Column), Order1:=xlAscending, Header:=xlYes End If End Sub
Descarga el archivo de ejemplo
039 – Automatizando macros con Eventos de Hoja o Worksheet.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.