当我们在vba中定义一个变量为对象时,需要将具体的某个对象实例赋值给这个变量才能正常使用。
如下代码所示,oWK变量被定义为工作表对象,然后用set语句将第一个工作表赋值给这个变量,这个变量才具有使用价值。
Sub xyf() Dim oWK As Worksheet Set oWK = Excel.Worksheets(1) MsgBox oWK.Name End Sub
类似的IRibbonUI也是一个对象,在vba中我们也可以定义一个变量为这个对象类型,然后将某个具体的实例赋值给它。
根据帮助文档中描述的IRibbonUI对象是由customUI标签中的onLoad回调函数返回的。
The object that is returned by the onLoad procedure specified on the customUI tag
在自定义功能区时可以在customUI元素中添加onLoad属性指定加载自定义功能区时执行的vba过程代码。
如下所示
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonUI_onLoad" >
对应的回调函数
RibbonUI_onLoad
在vba中的形式如下
Sub RibbonUI_onLoad(ribbon As IRibbonUI) End Sub
RibbonUI_onLoad回调函数中的变量ribbon就是返回的IRibbonUI对象
由于一旦加载自定义功能区,就将调用RibbonUI_onLoad回调函数。所以可以在RibbonUI_onLoad回调函数内把ribbon赋值给定义的IRibbonUI变量。为了可以在其它过程代码中使用这个定义的变量,需要将它定义为模块级公共变量。
完整的代码如下
Dim oRUI As IRibbonUI Sub RibbonUI_onLoad(ribbon As IRibbonUI) Set oRUI = ribbon End Sub Sub QQ1722187970() oRUI.Invalidate End Sub
发表评论