我的OnLoadRibbon子程序没有被调用

时间:2016-04-18 00:16:25

标签: excel-vba customization vba excel

我刚开始使用Microsoft UI Editor在Excel中自定义功能区。我正在尝试使用OnRibbonLoad子例程在打开电子表格时使用默认值初始化编辑框和复选框。我发现真正奇怪的是我在测试电子表格中使用了以下代码并且工作正常:

Public MyRibbonUI As IRibbonUI

Private Sub OnRibbonLoad(ribbonUI As IRibbonUI)
    Set MyRibbonUI = ribbonUI

    GBLDelimited = True
    MsgBox "Hello"
    'script to set global variable values to be used as default values
End Sub

但是当我在我正在开发的电子表格中使用它时,它似乎根本就没有被调用。我添加的Msgbox行测试子程序是否被调用。在我的测试电子表格中,打开后会立即显示“Hello”消息,表明正在调用子例程。但是,该消息并非在我的其他电子表格中显示。

我怀疑当我尝试在一个onAction回调子程序中为一个复选框(试图在打开时设置默认值)运行此行时,这个问题与我得到“运行时错误91”直接相关:

MyRibbonUI.InvalidateControl ("checkBoxTest")

我确信checkBox已正确标记。

有人可以解释为什么OnRibbonLoad子程序在一个电子表格中工作而在另一个电子表格中工作,即使使用相同的代码也是如此吗?

1 个答案:

答案 0 :(得分:0)

我刚发现了这个问题。在我开发的第二个电子表格的Microsft UI Editor脚本中,我没有包含OnLoad命令

<customUI xmlns="......."    onLoad="OnRibbonLoad">

这是在我的测试电子表格中,但不在我正在开发的那个中。现在感觉有点傻。