ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 工作簿Open事件为何不能访问RibbonUI?

工作簿Open事件为何不能访问RibbonUI?

作者:绿色风 分类: 时间:2022-08-17 浏览:129
楼主
amulee
Q:工作簿Open事件为何不能访问RibbonUI?
     在这个例子中展示了如何禁用Ribbon中的剪切按钮。但是当在WorkBook_Open事件中该程序却出错。该如何解决?
A:当通过XML自定义了Ribbon,需要以回调函数onLoad来对RibbonUI对象进行变量设定。该回调函数的运行优先级是低于工作簿Open事件的,即当打开工作簿时,程序先执行Open事件,然后再运行onLoad回调函数。
当执行Open事件时,RibbonUI对象并未进行任何变量的赋值,此时若运行RibbonUI对象的Invalidate方法,是没有任何对象绑定的,因而会发生错误。
若要在打开工作簿时实现禁用Ribbon中剪切按钮的禁用,需要将该进行代码写入onLoad函数对RibbonUI对象进行绑定之后。于是可以将该过程写入onLoad函数中。
参考代码如下:
  1. '定义RibbonUI
  2. Public rxIRibbonUI As IRibbonUI
  3. '定义全局变量Bln,来判断是否禁用Cut
  4. Public Bln As Boolean

  5. 'RibbonUI加载时运行
  6. Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)
  7.     Set rxIRibbonUI = ribbon
  8.     Bln = True
  9.     '此处运行禁用剪切的过程
  10.     Cut_Enanble
  11. End Sub

  12. '剪切按钮回调,控制其是否禁用
  13. Sub GetEnable(control As IRibbonControl, ByRef returnedVal)
  14.     returnedVal = Bln
  15. End Sub

  16. '改变全局变量,并刷新RibbonUI
  17. Sub Cut_Enanble()
  18.     Bln = Not Bln
  19.     rxIRibbonUI.Invalidate
  20. End Sub


由本例可知,当需要在打开工作簿时对RibbonUI进行操作,则可以将程序写入RibbonUI的回调函数onLoad之中。

附件下载:
工作簿打开时禁用RibbonUI的剪切.rar
2楼
水星钓鱼
这个级别稍高了。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap