¿Cómo usar la instrucción RaiseEvent en VBA?

En VBA (Visual Basic for Applications), `RaiseEvent` se utiliza para desencadenar un evento personalizado en una clase o formulario que tiene eventos definidos. Para usar `RaiseEvent`, primero debes definir el evento en la clase o módulo de clase, luego debes escribir el procedimiento que manejará el evento y finalmente usar `RaiseEvent` para disparar el evento.

Aquí te dejo un ejemplo paso a paso de cómo usar `RaiseEvent` en una clase de VBA:

Paso 1: Definir un evento en una clase

Primero, crea una clase (por ejemplo, `clsCustomClass`) y define un evento usando la palabra clave `Event`.

' En el módulo de clase llamado clsCustomClass
Public Event MiEvento(mensaje As String)

' Opcional: Una función pública para llamar al evento
Public Sub LanzarMiEvento(mensaje As String)
    RaiseEvent MiEvento(mensaje)
End Sub

Paso 2: Crear una instancia de la clase y vincular un controlador de eventos

En un módulo estándar, un formulario o en la hoja de trabajo, crea una instancia de la clase y escribe el procedimiento que manejará el evento.

' En un módulo estándar, formulario o hoja de trabajo
Dim WithEvents miObjeto As clsCustomClass

' Este es el procedimiento que manejará el evento MiEvento
Private Sub miObjeto_MiEvento(mensaje As String)
    MsgBox "El evento se ha disparado con el mensaje: " & mensaje
End Sub

' Rutina para inicializar la instancia de la clase y vincular el controlador de eventos
Sub IniciarObjeto()
    Set miObjeto = New clsCustomClass
End Sub

Paso 3: Disparar el evento con `RaiseEvent`

Puedes disparar el evento utilizando la función pública previamente codificada en la clase, o directamente si tienes control sobre el objeto desde el módulo estándar.

' Usando un procedimiento en el módulo estándar para disparar el evento
Sub DispararEvento()
    Call IniciarObjeto
    miObjeto.LanzarMiEvento "¡Hola mundo!"
End Sub

' O directamente con RaiseEvent (si la clase lo permite)
Sub DispararEventoDirecto()
    Call IniciarObjeto
    RaiseEvent miObjeto.MiEvento("¡Hola mundo directo!")
End Sub

Recuerda que para que un procedimiento maneje un evento desde una clase con la palabra clave `WithEvents`, la variable que representa la instancia de la clase debe estar declarada a nivel de módulo o formulario.

Pon en práctica estos pasos para incorporar la funcionalidad de eventos personalizados en tus proyectos de VBA.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario