Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

¿Qué es un evento en VBA?

| Sin comentarios

¿Qué es un evento en VBA?

Los eventos en Excel son desencadenantes de una acción, como modificar el valor de un celda. Cuando sucede esto, se ejecuta un procedimiento asociado al código en nuestro VBA.

¿Qué conceptos se debe tener para hacer un evento?

1. Declarar eventos: Se debe de declarar el evento dentro de las estructuras, módulos e interfaces con la palabra clave Event.
2. Generación de eventos: Un evento es un mensaje importante.  La difusión del mensaje se denomina evento. Esto se genera con la instrucción RaiseEvent
3. Remitentes de eventos (Origen de evento): Se le dice remitente de eventos a cualquier objeto que es capaz de generar un evento.
4. Controladores de eventos: Es el procedimiento que se lleva acabo cuando se produce un evento correspondiente. Se puede usar una subrutina pero no una función ya que esta ultima no devolverá ningún valor al origen del evento.

Ejemplos

• Detectar si es día lunes al abrir un libro en concreto 

Escogemos el libro ThisWorkbook ya que es el que desencadena la acción.
Nos aparecerá por defecto el evento ´abrir´. Lo que se programe dentro del procedimiento se desencadenará en un momento en concreto.

Private Sub Workbook_Open ()

If Weekday(now)= vbMonday then
Msgbox “Debes hacer copia de seguridad”
End if

End Sub

• Maximizar la ventana cada vez que se active un libro

Private Sub Workbook_Activate()

Activewindow.windowstate = xlMaximized

End Sub

• En el caso de que se desactive el libro

Primero que lo active y de ahí que nos diga que debemos trabajar obligatoriamente en este libro. “Me” hace referencia a “Workbook”

Private Sub Workbook_Deactivate()

Me.Activate
MsgBox “Debes trabajar en este libro”

End Sub

• Detectar si se ha hecho algún cambio en la Hoja1

Eventos con VBA 1 Eventos con VBA 1
Figura 1. Datos en la Hoja1.


Código en VBA:

Private Sub Worksheet_Change (ByVal Target as Range)

Msgbox “Estás cambiando información”

End Sub

Eventos con VBA 2 Eventos con VBA 2
Figura 2. Código en VBA.

 

Eventos con VBA 3 Eventos con VBA 3
Figura 3.  Desarrollo del código.

• Para detectar si se ha hecho un cambio en un rango específico

Código en VBA:

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
Dim mirango as range
Set mirango=range(“A1:A21”)

If not Intersect(target, mirango) is nothing then
Msgbox “Has cambiado celdas en el rango”
End if

End Sub

Eventos con VBA 4 Eventos con VBA 4
Figura 4.  Código en VBA para un rango específico.

 

Eventos con VBA 5 Eventos con VBA 5
Figura 5.  Desarrollo del código para un rango específico.

Eventos con Excel

 

Deja una respuesta

Los campos requeridos estan marcados con *.