Los eventos de la hoja de trabajo en Excel VBA

Tabla de contenido:

Anonim

Es posible que desee ejecutar su fragmento de macro / VBA cuando una celda cambia su valor, cuando ocurre un doble clic, cuando se selecciona una hoja, etc. En todos estos casos usamos el Controlador de eventos de la hoja de trabajo. El controlador de eventos nos ayuda a ejecutar código VBA cada vez que ocurre un evento determinado.

En este artículo, aprenderemos brevemente sobre cada controlador de eventos de la hoja de trabajo.

¿Qué es un controlador de eventos de hojas de trabajo?

Un controlador de eventos de hoja de trabajo es una subrutina que es local a un módulo de hoja de trabajo.

¿Dónde escribir el código del controlador de eventos de la hoja de trabajo?

Los eventos de la hoja de trabajo se escriben solo en objetos de hojas. Si escribe un evento de hoja de trabajo en algún módulo o módulo de clase, no habrá ningún error, pero simplemente no funcionarán.

Escribir en el objeto de hoja. Haga doble clic en él o haga clic con el botón derecho y haga clic en ver código. Se mostrará el área de escritura de código.

¿Cómo escribir código para un evento específico en la hoja de trabajo?

Ahora, cuando esté en el modo de edición, en el menú desplegable de la esquina superior izquierda verá general. Haga clic en el menú desplegable y seleccione la hoja de trabajo. Ahora, en el menú desplegable de la esquina superior derecha, se mostrarán todos los eventos. Elija lo que necesite y se le escribirá un código esquelético para ese evento.

Cada evento tiene un nombre de procedimiento fijo. Estos son los nombres de subrutinas reservados. No puede usarlos para otras subrutinas en una hoja. En un módulo, funcionarán como una subrutina normal.

Importante: Cada subrutina de esa lista se ejecutará en el evento especificado.
Un tipo de procedimiento de evento de hoja de trabajo se puede escribir solo una vez en una hoja. Si escribe dos mismos procedimientos de manejo de eventos en una hoja, se producirá un error y no se ejecutará ninguno de ellos. Por supuesto, el error serán subrutinas ambiguas.

Aprendamos brevemente sobre cada uno de los eventos.

1. losWorksheet_Change (ByVal Target As Range)Evento

Este evento se activa cuando realizamos algún cambio en las hojas de trabajo que contienen (formato excluido). Si desea hacer algo si se realiza algún cambio en toda la hoja, el código será:

Private Sub Worksheet_Change (ByVal Target As Range) 'hacer algo Msgbox "hecho algo" End Sub 

El "objetivo" es la celda activa siempre.

Otro ejemplo: es posible que desee poner la fecha y la hora en la celda B1 si A1 cambia. En ese caso, usamos el evento worksheet_change. El código se vería así:

Private Sub Worksheet_Change (ByVal Target As Range) Si Objetivo.Address = "$ A $ 1" Then Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

Esto apuntará solo a la celda A1.

Si desea apuntar a un rango, use el siguiente ejemplo:

Ejecutar macro si se realiza algún cambio en la hoja en el rango especificado

2. losWorksheet_SelectionChange (ByVal Target As Range)Evento

Como sugiere el nombre, este evento se activa cuando cambia la selección. En otras palabras, si su cursor está en la celda A1 y se mueve a otra celda, se ejecutará el código de esta subrutina.

El siguiente código cambiará el color de las celdas activas siempre que cambie y si es una fila uniforme.

Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub 

Ahora, siempre que mi cursor se mueva en una fila par, se coloreará. Las celdas de filas impares se salvarán.

Otro ejemplo del evento Worksheet_SelectionChange:

El código VBA más simple para resaltar la fila y columna actual usando

3. los Worksheet_Activate () Evento

Este evento se activa cuando se activa el código de evento que contiene la hoja. El código esquelético para este evento es:

Private Sub Worksheet_Activate () End Sub 

Un ejemplo simple es mostrar el nombre de la hoja cuando se selecciona.

Private Sub Worksheet_Activate () MsgBox "Estás en" & ActiveSheet.Name End Sub 

Tan pronto como llegue a la hoja que contiene este código, el evento se ejecutará y se mostrará un mensaje que dice "Estás en el nombre de la hoja" (sheet2 es en mi caso).

4. los Worksheet_Deactivate () Evento

Este evento se activa al salir del código que contiene la hoja. En otras palabras, si desea hacer algo, como ocultar filas o cualquier cosa cuando deje la hoja, use este evento de VBA. La sintaxis es:

Private Sub Worksheet_Deactivate () 'su código' End Sub 

El siguiente ejemplo de evento Worksheet_Deativate simplemente mostrará un mensaje de que ha dejado la hoja maestra, cuando salga de esta hoja.

Private Sub Worksheet_Deactivate () MsgBox "Dejó la hoja maestra" End Sub 

5. los Worksheet_BeforeDelete ()Evento

Este evento se activa cuando confirma la eliminación de la hoja que contiene el evento de VBA. La sintaxis es simple:

Private Sub Worksheet_BeforeDelete () End Sub 

El siguiente código le preguntará si desea copiar el contenido de la hoja a punto de eliminar.

Private Sub Worksheet_BeforeDelete () ans = MsgBox ("¿Desea copiar el contenido de esta hoja a una nueva hoja?", VbYesNo) Si ans = True Entonces 'código para copiar End If End Sub 

6. los Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Evento

Este evento se activa cuando hace doble clic en la celda objetivo. La sintaxis de este evento de hoja de trabajo de VBA es:

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) End Sub 

Si no configura la celda o el rango de destino, se activará con cada doble clic en la hoja.
La variable Cancelar es una variable booleana. Si lo configura como Verdadero, la acción predeterminada no sucederá. Significa que si hace doble clic en la celda, no entrará en modo de edición.
El siguiente código hará que la celda se llene de color si hace doble clic en cualquier celda.

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) Cancelar = True Target.Interior.ColorIndex = 7 End Sub 

El siguiente código apunta a la celda A1. Si ya está relleno con el color especificado, desaparecerá el color. Es muy parecido a un botón Me gusta o una casilla de verificación.

Sub privado Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Si Target.Address = "$ A $ 1" Entonces Cancelar = Verdadero Si Target.Interior.ColorIndex = 4 Entonces Target.Interior.ColorIndex = xlColorIndex Ninguno Más Target.Interior.ColorIndex = 4 End If End If End Sub 

7. los Worksheet_BeforeRightClick (ByVal Target como rango, Cancelar como booleano) Evento

Este evento se activa cuando hace clic con el botón derecho en la celda de destino. La sintaxis de este evento de hoja de trabajo de VBA es:

Sub privado Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancelar = Verdadero '' su código 'End Sub 

El siguiente código llenará la celda con el valor 1 si hace clic derecho sobre él. No mostrará las opciones predeterminadas de clic derecho ya que hemos establecido el operador "Cancelar" en Verdadero.

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) Cancelar = True Target.Value = 1 End Sub 

8. los Worksheet_Calculate () Evento

Si desea que suceda algo cuando Excel calcula una hoja, use este evento. Se activará cada vez que Excel calcule una hoja. La sintaxis es simple:

Private Sub Worksheet_Calculate () '' su código 'End Sub 

6. los Worksheet_FollowHyperlink (Destino ByVal como hipervínculo)Evento

Este procedimiento se ejecutará cuando haga clic en un hipervínculo en la hoja. La sintaxis básica de este controlador de eventos es:

Private Sub Worksheet_FollowHyperlink (ByVal Target As Hyperlink) '' su código 'End Sub 

Puede configurar el hipervínculo de destino si lo desea. Si no configura el hipervínculo de destino, se ejecutará si hace clic en cualquier hipervínculo en la hoja que contiene el código.

Así que sí, chicos, estos fueron algunos eventos básicos de la hoja de trabajo que serán útiles si los conocen. A continuación se muestran algunos artículos relacionados que puede que le guste leer.

Si tiene alguna duda con respecto a este artículo o cualquier otro artículo relacionado con Excel / VBA, háganoslo saber en la sección de comentarios a continuación.

Uso del evento de cambio de hoja de trabajo para ejecutar una macro cuando se realiza algún cambio| Entonces, para ejecutar su macro cada vez que se actualiza la hoja, usamos los Eventos de la hoja de trabajo de VBA.

Ejecutar macro si se realiza algún cambio en la hoja en el rango especificado| Para ejecutar su código de macro cuando cambia el valor en un rango específico, use este código VBA. Detecta cualquier cambio realizado en el rango especificado y disparará el evento.

El código VBA más simple para resaltar la fila y columna actual usando | Utilice este pequeño fragmento de VBA para resaltar la fila y columna actuales de la hoja.

Articulos populares:

50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 atajos harán que su trabajo sea aún más rápido en Excel.

La función BUSCARV en Excel | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.

CONTAR.SI en Excel 2016 | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar un valor específico. La función Countif es esencial para preparar su tablero.

Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.