The code is firing. Set a breakpoint and step through code and you will see it execute.
Value is default property of data control. Value property is not set until control loses focus. Value is the property your function tests.
Consider following use of Text property without the UDF:
Code:
Private Sub tbText_Change()
If Len(Me.tbText.Text & "") = 0 Then
Me.OpGroup.Enabled = True
Else
Me.OpGroup.Enabled = False
End If
End Sub
or simply:
Private Sub tbText_Change()
Me.OpGroup.Enabled = Len(Me.tbText.Text & "") = 0
End Sub