如何实现RibbonX功能卡切换的响应事件

来源:互联网 发布:石田电子称软件 编辑:程序博客网 时间:2024/06/02 10:38

在Excel编程中,有时我们点击Tab功能卡后,希望切换工作表或让Excel有其他的响应,但是Tab没有可用的回调函数,如何实现RibbonX功能卡切换的响应事件呢?经过试验可以通过InvalidateControl 功能区中的某个控件,让它重新getLabel来实现。

多数控件都有getLabel回调函数,而我们自定义的功能卡中一般都会有button控件,这样只要每个功能卡中有一个这类的控件,就其Label设置成动态的getLabel回调实现,然后第个回调中加入需要实现的功能,并InvalidateControl其他功能区的button,那么在点击其他功能区Tab后,被InvalidateControl的控件会立即getLabel,这样就实现了点击每个功能区Tab的响应事件。

附部分代码如下:

'button的回调函数
Sub GetBtnLabel(control As IRibbonControl, ByRef returnedVal)    Dim label As String    Select Case control.ID        Case "btnGznyED"            label = IIf(PublicProperty.当前工作年月 = "", Format(Date, "yyyy年mm月"), PublicProperty.当前工作年月)        Case "btnGznyRY"            label = IIf(PublicProperty.当前工作年月 = "", Format(Date, "yyyy年mm月"), PublicProperty.当前工作年月)        Case "btnGznyJJ"            label = IIf(PublicProperty.当前工作年月 = "", Format(Date, "yyyy年mm月"), PublicProperty.当前工作年月)        Case "btnHideED"<span style="white-space:pre"></span>'功能卡1中的一个按钮            label = "总分配表"            ChangeSheet (label)<span style="white-space:pre"></span>'想要实现的事件            PublicProperty.MyRibbon.InvalidateControl ("btnHideRY")<span style="white-space:pre"></span><span style="font-family: Arial, Helvetica, sans-serif;">'</span><span style="font-family: Arial, Helvetica, sans-serif;">InvalidateControl其他Tab中的控件</span>            PublicProperty.MyRibbon.InvalidateControl ("btnHideJJ")<span style="white-space:pre"></span><span style="font-family: Arial, Helvetica, sans-serif;">'</span><span style="font-family: Arial, Helvetica, sans-serif;">InvalidateControl其他Tab中的控件</span>            PublicProperty.MyRibbon.InvalidateControl ("btnSetXtcs")<span style="white-space:pre"></span><span style="font-family: Arial, Helvetica, sans-serif;">'</span><span style="font-family: Arial, Helvetica, sans-serif;">InvalidateControl其他Tab中的控件</span>        Case "btnHideRY"<span style="font-family: Arial, Helvetica, sans-serif;"></span><span style="font-family: Arial, Helvetica, sans-serif;">'功能卡2中的一个按钮</span>            label = "信息表"            ChangeSheet (label)            PublicProperty.MyRibbon.InvalidateControl ("btnHideED")            PublicProperty.MyRibbon.InvalidateControl ("btnHideJJ")            PublicProperty.MyRibbon.InvalidateControl ("btnSetXtcs")        Case "btnHideJJ"<span style="font-family: Arial, Helvetica, sans-serif;"></span><span style="font-family: Arial, Helvetica, sans-serif;">'功能卡3中的一个按钮</span>            label = "工作表"            ChangeSheet (label)            PublicProperty.MyRibbon.InvalidateControl ("btnHideRY")            PublicProperty.MyRibbon.InvalidateControl ("btnHideED")            PublicProperty.MyRibbon.InvalidateControl ("btnSetXtcs")        Case "btnHideXtcs"<span style="font-family: Arial, Helvetica, sans-serif;"></span><span style="font-family: Arial, Helvetica, sans-serif;">'功能卡4中的一个按钮</span>            label = "xtcs"            ChangeSheet (label)            PublicProperty.MyRibbon.InvalidateControl ("btnHideRY")            PublicProperty.MyRibbon.InvalidateControl ("btnHideED")            PublicProperty.MyRibbon.InvalidateControl ("btnHideJJ")        Case Else            label = IIf(PublicProperty.当前工作年月 = "", Format(Date, "yyyy年mm月"), PublicProperty.当前工作年月)        End Select        label = "    " & label & "    "    returnedVal = labelEnd Sub

<button id="btnHideXtcs" getLabel="GetBtnLabel" onAction="setxtcs" />

0 0
原创粉丝点击