Is triggering an event via a change in variable possible? For example.
This would trigger the event
Dim t As Integer
Dim Fire As Boolean
Private Sub Test
t = 0
Fire = True
IIf Fire, t=1, t=2
End sub
In the event handler
Select Case t
    Case 0
       'Do something
    Case 1
       'Do something            
    Case 2
       'Do something
    Case 3
       'Do something
    ...   
Google brings up Event handlers, and using class modules but I am unable to wrap my head around it.
Yes this is possible. However, you'll need an Object Oriented approach. You first need to define a class that raises the events you wish to hook into. Secondly you'll need a class that actually handles the event, since you can not use event handlers in a regular module. Thirdly, in your regular module you can then just use these classes.
Here's a simple example: Create a class module named "ClassWithEvent". Place the following code:
Public Event VariableChange(value As Integer)
Private p_int As Integer
Public Property Get value() As Integer
    value = p_int
End Property
Public Property Let value(value As Integer)
    If p_int <> value Then RaiseEvent VariableChange(value) 'Only raise on actual change.
    p_int = value
End Property
Next, create the class that can handle the events raised by this class. Name this Class Module "ClassHandlesEvent". Place the following code in it:
Private WithEvents SomeVar As ClassWithEvent
Private Sub SomeVar_VariableChange(value As Integer) 'This is the event handler.
    Select Case value
        Case 1:
            MsgBox "here, 1!"
        Case 2:
            MsgBox "here, 2!"
        Case Default:
            'Do Nothing
    End Select
End Sub
Public Property Get EventVariable() As ClassWithEvent
    Set EventVariable = SomeVar
End Property
Public Property Let EventVariable(value As ClassWithEvent)
    Set SomeVar = value
End Property
Next, in a regular module, instantiate your ClassWithEvent and pass this one as a property to the class that handles them.
Sub test()
    Dim var As ClassHandlesEvent
    Dim tst As ClassWithEvent
    Set var = New ClassHandlesEvent
    Set tst = New ClassWithEvent
    var.EventVariable = tst
    tst.value = 2 'A messagebox saying "Here, 2!" will pop-up
End Sub
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With