¿Cómo usar el evento Terminate en VBA?

En VBA (Visual Basic for Applications), el evento Terminate se utiliza en clases para ejecutar código justo antes de que una instancia de la clase sea destruida o liberada de la memoria. Este evento es útil para realizar tareas de limpieza, como cerrar conexiones a bases de datos o liberar recursos que ya no son necesarios.

Aquí tienes un ejemplo básico de cómo usar el evento Terminate en una clase de VBA:

  • Crear la clase:
    • Abre tu proyecto de VBA en Excel, Access o cualquier aplicación de Office que estés utilizando.
    • Ve al Editor de VBA (puedes acceder presionando Alt + F11).
    • En el Explorador de Proyectos, haz clic derecho sobre tu proyecto, selecciona Insertar y luego Clase Módulo.
    • Esto creará una nueva clase. Cambia su nombre a algo significativo, por ejemplo, MiClase.
    • Definir el evento Terminate:

    Dentro de tu clase (MiClase en este caso), puedes implementar el evento Terminate de la siguiente manera:

    ' MiClase.cls
    
    Option Explicit
    
    
    
    ' Variable de instancia
    
    Private mResource As Object
    
    
    
    ' Constructor (opcional) para inicializar algún recurso
    
    Private Sub Class_Initialize()
    
    ' Asigna algún recurso a mResource, por ejemplo:
    
    Set mResource = CreateObject("Scripting.Dictionary")
    
    Debug.Print "Recurso inicializado."
    
    End Sub
    
    
    
    ' Evento Terminate para limpiar recursos
    
    Private Sub Class_Terminate()
    
    ' Libera recursos o realiza tareas de limpieza aquí
    
    Set mResource = Nothing  ' Libera el objeto
    
    Debug.Print "Recurso liberado."
    
    End Sub
    
    
    • Utilizar la clase en un módulo:

    Luego, utiliza la clase desde un módulo estándar para ver cómo funciona el evento Terminate:

    ' Módulo de prueba
    
    Option Explicit
    
    
    
    Sub TestClase()
    
    Dim obj As MiClase
    
    Set obj = New MiClase
    
    
    
    ' Haz algo con el objeto
    
    ' ...
    
    
    
    ' Al finalizar la subrutina o cuando se elimine obj,
    
    ' el evento Terminate es llamado automáticamente
    
    Set obj = Nothing
    
    End Sub
    
    

    Cuando ejecutas TestClase, verás que primero se imprime “Recurso inicializado.” debido al constructor Class_Initialize, y justo antes de que el objeto sea destruido, se imprime “Recurso liberado.” debido al evento Class_Terminate.

    Recuerda que no puedes llamar explícitamente al evento Terminate; este se activa automáticamente cuando se libera la última referencia a un objeto de esa clase, ya sea estableciéndola a Nothing o cuando la variable sale de alcance.

    Unlock Your Potential

    Excel

    Basic - Advanced

    Access

    Access Basic - Advanced

    Power BI

    Power BI Basic - Advanced

    Help us grow the project