Excel VBA通过选择启用功能区按钮

Excel VBA通过选择启用功能区按钮,excel,ribbonx,vba,Excel,Ribbonx,Vba,我正在试图找出如何根据选择启用功能区按钮,我知道我需要使用工作表\u SelectionChange事件,但我不确定如何继续。我已经用尽了所有的选择来寻找如何做到这一点,是否有人可以帮助这一点,请,我已经问了Excel先生,但没有回答我需要什么。 我正在寻找的示例是: 如果选择了列,则启用功能区按钮a;如果选择了行,则启用功能区按钮b使用功能区回调并在适当的情况下调用或。有关更多信息,请参阅 可以使用VBA宏或COM加载项中的回调过程自定义功能区UI。对于外接程序实现的每个回调,都会缓存响应。例

我正在试图找出如何根据选择启用功能区按钮,我知道我需要使用工作表\u SelectionChange事件,但我不确定如何继续。我已经用尽了所有的选择来寻找如何做到这一点,是否有人可以帮助这一点,请,我已经问了Excel先生,但没有回答我需要什么。 我正在寻找的示例是:


如果选择了列,则启用功能区按钮a;如果选择了行,则启用功能区按钮b

使用功能区回调并在适当的情况下调用或。有关更多信息,请参阅

可以使用VBA宏或COM加载项中的回调过程自定义功能区UI。对于外接程序实现的每个回调,都会缓存响应。例如,如果外接程序编写器为按钮实现了
getImage
回调过程,则调用该函数一次,加载图像,然后如果需要更新图像,则使用缓存的图像,而不是调用该过程。此过程保持不变,直到代码通过使用
Invalidate
方法发出缓存值无效的信号,此时再次调用回调过程并缓存返回响应。然后,外接程序或VBA宏可以通过调用
Refresh
方法强制立即更新UI

在自定义UI XML文件中,需要声明
onLoad
回调:

<customUI … onLoad=”MyAddInInitialize” …>
阅读以下文章中有关Fluent UI(又称Ribbon UI)的更多信息:


这是我目前所拥有的,但我还是个新手

End Sub

子OnAction按钮(控件作为IRIBOnControl)

End Sub

Sub-GetEnabled(控件作为IRIBOnControl,ByRef已启用)


End Sub

您知道如何启用功能区按钮吗?请分享您目前拥有的代码。这里有两个步骤:在选择更改时执行某些操作,以及启用功能区按钮。这些步骤中的每一步都有很多现有的示例,请努力。这是我目前为止的示例,但我还是一个新手。不知道如何在这里添加代码
Dim MyRibbon As IRibbonUI
Sub MyAddInInitialize(Ribbon As IRibbonUI)
   Set MyRibbon = Ribbon
End Sub

Sub myFunction()
   ‘ Invalidates the caches of all of this add-in’s controls 
   MyRibbon.Invalidate()            
End Sub
        `<separator id="MoveSep" />`
Set oRibbon = ribbon
bEnabled = True
Select Case control.ID
    Case "MoveColumnLeft"
        bEnabled = enabled
        oRibbon.Invalidate
    Case "MoveColumnRight"
        bEnabled = enabled
        oRibbon.Invalidate
    End Select
`Select Case control.ID
    Case "MoveColumnLeft"
        enabled = enabled
    Case "MoveColumnRight"
        enabled = enabled
End Select