在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月"), PublicProp