Это кнопка toggleButton для включения/выключения функции «Уменьшить размер текста».
Проблема: он не обновляется должным образом.
Как сделать так, чтобы он всегда «показывал» состояние активных ячеек?
' -- XML
<customUI xmlns = "http://schemas.microsoft.com/office/2009/07/customui" onLoad = "LoadRibbon">
<ribbon>
<tabs>
<tab id = "Tabv3.1" label = "TOOLS" insertAfterMso = "TabHome">
<group id = "Group6" label = "Alignment">
<toggleButton id = "ToggleButton1"
label = "Shrink to fit"
imageMso = "AsianLayoutCharacterScaling"
size = "large"
getPressed = "ToggleButton1_Startup"
onAction = "ToggleButton1_OnAction"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
' -- Standard Module
Option Explicit
Public RibUI As IRibbonUI
Sub LoadRibbon(Ribbon As IRibbonUI)
Set RibUI = Ribbon
RibUI.InvalidateControl "ToggleButton1"
End Sub
' ToggleButton 1 Startup
Sub ToggleButton1_Startup( _
ByRef control As IRibbonControl, _
ByRef returnedVal)
returnedVal = (Selection.ShrinkToFit = True)
End Sub
' ToggleButton 1 Click
Sub ToggleButton1_OnAction( _
ByRef control As IRibbonControl, _
ByRef pressed As Boolean)
Select Case pressed
Case True
Selection.ShrinkToFit = True
Case False
Selection.ShrinkToFit = False
End Select
End Sub
' -- ThisWorkbook
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
RibUI.InvalidateControl "ToggleButton1"
End Sub


Workbook_SheetSelectionChange для запуска обновления лентыДокументация Майкрософт:
' -- ThisWorkbook
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
RibUI.InvalidateControl ("ToggleButton1")
End Sub