You just need to use the getPressed callback and to include onLoad in your xmlns
PaulOption Explicit Public gobjRibbon As IRibbonUI Public B1 As Boolean, B2 As Boolean Public Sub OnRibbonLoad(objRibbon As IRibbonUI) Set gobjRibbon = objRibbon B1 = False B2 = False End Sub 'Callback for customButton1 onAction Sub Pushed(control As IRibbonControl, pressed As Boolean) Select Case control.ID Case "customButton1" B1 = True B2 = False Case "customButton2" B1 = False B2 = True End Select gobjRibbon.Invalidate End Sub 'Callback for customButton1 getPressed Sub UpOrDown(control As IRibbonControl, ByRef returnedVal) Select Case control.ID Case "customButton1" returnedVal = B1 Case "customButton2" returnedVal = B2 End Select End Sub <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"onLoad="OnRibbonLoad" > <ribbon startFromScratch="false"> <tabs> <tab id="customTab"label="Custom Tab"> <group id="customGroup"label="Custom Group"> <toggleButton id="customButton1"label="Face 1"imageMso="HappyFace"size="large"onAction="Pushed"getPressed="UpOrDown" /> <toggleButton id="customButton2"label="Face 2"imageMso="HappyFace"size="large"onAction="Pushed"getPressed="UpOrDown" /> </group> </tab> </tabs> </ribbon> </customUI>