I couldn't get the snippets of code to work so I changed stuff for testing
I think that this layout is a little more reliable, and has the advantage that it seems to work
In ThisWortkbook
Option Explicit
Private Sub Workbook_Open()
buttonActiveColour = vbGreen ' RGB(115, 135, 156)
buttonInactiveColour = vbRed ' RGB(225, 225, 225)
tableChange
End Sub
In a Standard Module
Option Explicit
Public buttonActiveColour As Long
Public buttonInactiveColour As Long
Public currentTable As String
Sub tableChange() ' not Private
With Worksheets("Sheet1")
'for testing
currentTable = .Range("K3").Value
Select Case currentTable
Case Is = "Bookings"
.cmdBooking.BackColor = buttonActiveColour
Case Else
.cmdBooking.BackColor = buttonInactiveColour
End Select
End With
End Sub
In the Worksheet Module
Option Explicit
Private Sub cmdBooking_Click()
tableChange
End Sub
Private Sub Worksheet_Activate()
tableChange
End Sub