Code:
Are there any other ways I could achieve this or do I need to write the event handler for each control?
put your sub into a new module, change it to a function and make it public. e.g.
Code:
Public Function SelectionChange()
Dim ctlCurrentControl As Control
MsgBox "selection changed"
Set ctlCurrentControl = Screen.ActiveControl
If ctlCurrentControl.Name = "field1" Then
MsgBox "field1"
ElseIf ctlCurrentControl.Name = "field2" Then
MsgBox "field2"
End If
End Sub
then on each of the controls click event replace [Event Procedure] with =SelectionChange()
if you have many controls, you can just select them all and replace all in one go
I'm not sure why you are using the SelectionChange event - it relates to pivot tables and charts but you are talking about controls