xml – 动态更改功能区的按钮标签Excel
发布时间:2020-12-16 07:41:11 所属栏目:百科 来源:网络整理
导读:我使用以下 XML代码为Excel加载项创建自定义功能区. customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" ribbon startFromScratch="false" tabs tab id="ComdinheiroTab" label="COMDINHEIRO" group id="ComdinheiroButtons" label="Co
我使用以下
XML代码为Excel加载项创建自定义功能区.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="false"> <tabs> <tab id="ComdinheiroTab" label="COMDINHEIRO"> <group id="ComdinheiroButtons" label="Comdinheiro"> <button id="Login" getLabel="getLabelLogin" image="Login" size="large" onAction="OnActionLogin"/> </group> </tab> </tabs> </ribbon> </customUI> 我使用以下VBA代码为按钮登录设置标签: Sub getLabelLogin(control As IRibbonControl,ByRef returnedVal) if loggedIn = true then returnedVal = "Logged" else returnedVal = "Disconected" end if End Sub 加载功能区时,标签的名称会根据变量loggedIn的值成功更改.但是我希望我可以在执行程序时更改标签的值.是否可以使用VB代码调用getLabel事件?无论如何都要刷新我的功能区,以便再次调用此事件?
是的,以后可以运行“get”回调.为此,您需要创建一个模块或全局级变量来保存“功能区UI”对象.该对象有两个有用的方法:Invalidate和InvalidateControl.第一个触发Ribbon XML中的所有“get”回调.第二个触发器仅针对指定的控件触发回调.
在功能区加载时,必须将功能区ui指定给此对象.为了实现这一点,您需要在Ribbon XML的customUI标记及其VBA中的回调中使用属性onLoad. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="ribbonLoaded"> <ribbon startFromScratch="false"> <tabs> <tab id="ComdinheiroTab" label="COMDINHEIRO"> <group id="ComdinheiroButtons" label="Comdinheiro"> <button id="Login" getLabel="getLabelLogin" image="Login" size="large" onAction="OnActionLogin"/> </group> </tab> </tabs> </ribbon> </customUI> VBA: Dim ribbonUI as IRibbonUI Sub ribbonLoaded(ribbon as IRibbonUI) Set ribbonUI = ribbon End Sub Sub UpdateTheLabel ribbonUI.InvalidateControl("Login") End Sub Sub getLabelLogin(control As IRibbonControl,ByRef returnedVal) if loggedIn = true then returnedVal = "Logged" else returnedVal = "Disconected" end if End Sub 只要过程有权访问ribbonUI对象,任何过程调用InvalidateControl都无关紧要. 有关这方面的更多信息,请参阅MSDN文章https://msdn.microsoft.com/en-us/library/aa338202(v=office.12)#OfficeCustomizingRibbonUIforDevelopers_Dynamically (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |