Thanks for taking a look Paul
re #3 I'm self taught so I realise I often don't do or explain things in the proper way - I appreciate the criticism though as if no one tells me, I won't know!
re #4 I stripped down my actual file when creating the example but forgot that it would disable itself for anyone that actually tried to help
. It also explains the random bits of unexplained code you picked up on as I clearly missed those too.
The reason I have such a complicated method is because I will be turning the .xlsm into a .xlam addin which I can distribute to my team. That way, the toolbar is loaded every time a user opens an instance of excel, however it means the workbook event handlers will never trigger as the workbook itself isn't touched. The custom class is a workaround that I found in an example on the internet (although I admit I don't fully understand it).
As for your method, it didn't work for me as the button didn't toggle when a cell with the "CenterAcrossProperty" was selected. I did manage to get it working however by tweaking
v = (Selection.EntireColumn.HorizontalAlignment = xlCenterAcrossSelection)
to
v = (Selection.HorizontalAlignment = xlCenterAcrossSelection)
I'll try your method in an addin and see if it works, then post back.