细品RibbonX39技巧使用VBA自定义功能区元素属性.docx

上传人:b****6 文档编号:5647948 上传时间:2022-12-30 格式:DOCX 页数:7 大小:16.08KB
下载 相关 举报
细品RibbonX39技巧使用VBA自定义功能区元素属性.docx_第1页
第1页 / 共7页
细品RibbonX39技巧使用VBA自定义功能区元素属性.docx_第2页
第2页 / 共7页
细品RibbonX39技巧使用VBA自定义功能区元素属性.docx_第3页
第3页 / 共7页
细品RibbonX39技巧使用VBA自定义功能区元素属性.docx_第4页
第4页 / 共7页
细品RibbonX39技巧使用VBA自定义功能区元素属性.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

细品RibbonX39技巧使用VBA自定义功能区元素属性.docx

《细品RibbonX39技巧使用VBA自定义功能区元素属性.docx》由会员分享,可在线阅读,更多相关《细品RibbonX39技巧使用VBA自定义功能区元素属性.docx(7页珍藏版)》请在冰豆网上搜索。

细品RibbonX39技巧使用VBA自定义功能区元素属性.docx

细品RibbonX39技巧使用VBA自定义功能区元素属性

细品RibbonX(39):

技巧—使用VBA自定义功能区元素属性

除了使用类创建自定义属性外,也可以为许多对象(例如工作簿、工作表,等)创建自定义属性。

此外,在给对象定义自定义属性之后,属性作为对象的成员被公开,例如:

ThisWorkbook.MyRibbon

 

正如所见,从父对象直接引用UI对象非常容易,当引用回Ribbon对象时可以省去很多麻烦。

考虑到用户经常同时打开多个应用程序,每个程序都会有一个名为MyRibbon的对象,因此让代码可以清楚地指定引用的确切对象是至关重要的。

设置自定义属性

设置内置对象的自定义属性与使用标准的类模块创建自定义属性相同。

唯一不同的是,属性必须驻留在其容器对象里,以便属性能够作为该指定对象的成员公开。

可以使用自定义属性模拟上下文选项卡来容易地访问可视的属性、确定标签值,等等。

下面的示例中,我们开发自定义属性来控制可见性。

该示例实现下列功能:

显示/隐藏与工作表相关的选项卡的自定义属性

两个复选框,控制两个内置组的可见性(字体和表)

本例中,关键属性是getVisible属性,我们将使之变成自定义属性以便通过该属性修改其值。

注意,通过这些自定义属性将显示/隐藏位于不同选项卡里的组。

 

<customUIxmlns="

onLoad="rxIRibbonUI_onLoad">

<ribbonstartFromScratch="false">

<tabs>

<tabid="rxtabSheet"

label="SheetTab"

insertBeforeMso="TabHome"

getVisible="rxtabSheet_getVisible">

<groupid="rxgrp1"

label="MyCustomGroup">

</group>

</tab>

<tabidMso="TabHome"

label="ModifiedHome">

<groupid="rxgrp2"

insertBeforeMso="GroupClipboard"

label="MyCheckBox">

<!

--AddacheckBox-->

<checkBoxid="rxchkHideFontGroup"

getLabel="rxchkHideFontGroup_getLabel"

onAction="rxchkHideFontGroup_Click"

screentip="HidetheFontGroup"

supertip="Clickheretohide/unhidetheFontGroup"/>

<!

--AddacheckBox-->

<checkBoxid="rxchkHideTableGroup"

getLabel="rxchkHideTableGroup_getLabel"

onAction="rxchkHideTableGroup_Click"

screentip="HidetheTablesGroup"

supertip="ClickheretohidetheTablesGroups"/>

</group>

</tab>

<tabidMso="TabHome">

<groupidMso="GroupFont"

getVisible="GroupFont_getVisible"/>

</tab>

<tabidMso="TabInsert">

<groupidMso="GroupInsertTablesExcel"

getVisible="GroupInsertTablesExcel_getVisible"/>

</tab>

</tabs>

</ribbon>

</customUI>

 

上述代码创建了“ModifiedHome”选项卡,在剪贴板前添加了“MyCheckBox”组,并且添加了一个名为“SheetTab”的空选项卡,界面如下图所示。

接下来,定义属性。

在ThisWorkbook对象中定义下列属性:

 

PrivatepRibbonUIAsIRibbonUI

PrivatepblnGrpTblVisibleAsBoolean

PrivatepblnGrpFontVisibleAsBoolean

'设置Ribbon对象,使之能够作为ThisWorkbook的成员访问

PublicPropertyLetrxIRibbonUI(iRibAsIRibbonUI)

SetpRibbonUI=iRib

EndProperty

PublicPropertyGetrxIRibbonUI()AsIRibbonUI

SetrxIRibbonUI=pRibbonUI

EndProperty

'设置可见性属性,使之能够作为ThisWorkbook的成员访问

PublicPropertyLetrxIRibbonUIGroupTableVisible(_

ByValblnVisibleAsBoolean)

pblnGrpTblVisible=blnVisible

EndProperty

PublicPropertyGetrxIRibbonUIGroupTableVisible()AsBoolean

rxIRibbonUIGroupTableVisible=pblnGrpTblVisible

EndProperty

PublicPropertyLetrxIRibbonUIGroupFontVisible(_

ByValblnVisibleAsBoolean)

pblnGrpFontVisible=blnVisible

EndProperty

PublicPropertyGetrxIRibbonUIGroupFontVisible()AsBoolean

rxIRibbonUIGroupFontVisible=pblnGrpFontVisible

EndProperty

 

注意,虽然用于决定可见性的这些变量在ThisWorkbook模块,但由于ThisWorkbook对象可以在本工程的任何地方访问,因此可以在该模块之外设置或获取这些属性的值。

在编写回调代码之前,还需要为工作表创建自定义属性,然后使用这些属性来决定与该工作表相关的选项卡是否显示,这里使用工作表Sheet1,当然您可以根据需要修改。

使用下列代码为该工作表设置自定义属性:

 

PrivatepglnTabVisibleAsBoolean

PropertyLetrxIRibbonUISheetTabVisible(ByValblnVisibleAsBoolean)

pglnTabVisible=blnVisible

EndProperty

PropertyGetrxIRibbonUISheetTabVisible()AsBoolean

rxIRibbonUISheetTabVisible=pglnTabVisible

EndProperty

PrivateSubWorksheet_Activate()

Sheet1.rxIRibbonUISheetTabVisible=True

ThisWorkbook.rxIRibbonUI.Invalidate

EndSub

PrivateSubWorksheet_Deactivate()

Sheet1.rxIRibbonUISheetTabVisible=False

ThisWorkbook.rxIRibbonUI.Invalidate

EndSub

 

注意,现在可以利用我们为ThisWorkbook创建的自定义属性来使Ribbon无效。

我们不再将该属性作为普通的对象,相反我们将其作为属性即ThisWorkbook对象的一个成员。

因此,该UI是ThisWorkbook的一部分。

最后,编写回调代码:

 

SubrxIRibbonUI_onLoad(ribbonAsIRibbonUI)

ThisWorkbook.rxIRibbonUI=ribbon

EndSub

SubrxtabSheet_getVisible(controlAsIRibbonControl,ByRefreturnedVal)

returnedVal=Sheet1.rxIRibbonUISheetTabVisible

EndSub

SubrxchkHideFontGroup_Click(controlAsIRibbonControl,pressedAsBoolean)

ThisWorkbook.rxIRibbonUIGroupFontVisible=pressed

ThisWorkbook.rxIRibbonUI.Invalidate

EndSub

SubrxchkHideTableGroup_Click(controlAsIRibbonControl,pressedAsBoolean)

ThisWorkbook.rxIRibbonUIGroupTableVisible=pressed

ThisWorkbook.rxIRibbonUI.Invalidate

EndSub

SubGroupFont_getVisible(controlAsIRibbonControl,ByRefreturnedVal)

returnedVal=True

Ifcontrol.ID="GroupFont"Then

returnedVal=Not(ThisWorkbook.rxIRibbonUIGroupFontVisible)

Else

ThisWorkbook.rxIRibbonUI.Invalidate

EndIf

EndSub

SubGroupInsertTablesExcel_getVisible(controlAsIRibbonControl,ByRefreturnedVal)

returnedVal=True

Ifcontrol.ID="GroupInsertTablesExcel"Then

returnedVal=Not(ThisWorkbook.rxIRibbonUIGroupTableVisible)

Else

ThisWorkbook.rxIRibbonUI.Invalidate

EndIf

EndSub

SubrxchkHideFontGroup_getLabel(controlAsIRibbonControl,ByRefreturnedVal)

SelectCaseThisWorkbook.rxIRibbonUIGroupFontVisible

CaseTrue

returnedVal="ShowFontGroup"

CaseFalse

returnedVal="HideFontGroup"

EndSelect

EndSub

SubrxchkHideTableGroup_getLabel(controlAsIRibbonControl,ByRefreturnedVal)

SelectCaseThisWorkbook.rxIRibbonUIGroupTableVisible

CaseTrue

returnedVal="ShowTableGroup"

CaseFalse

returnedVal="HideTableGroup"

EndSelect

EndSub

 

现在,你可以通过自定义属性来定义与UI对象相关的不同的属性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1