代码之家  ›  专栏  ›  技术社区  ›  user23636411

Excel功能区切换按钮:收缩以适应

  •  0
  • user23636411  · 技术社区  · 2 年前

    这是一个 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="Allignment">
              <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
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   taller    2 年前
    • 使用 Workbook_SheetSelectionChange 触发功能区刷新

    Microsoft文档:

    Workbook.SheetSelectionChange event (Excel)

    ' -- ThisWorkbook
    
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        RibUI.InvalidateControl ("ToggleButton1")
    End Sub