打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
细品RibbonX(19):checkBox控件详解
checkBox控件能够使用户在两种状态之间切换。虽然默认情况下状态是真和假,但是该元素能够指明开/关、上/下、左/右、1/0、或者任何可以想象到的相对状态组合。
您可能想使用checkBox来做下列操作:
²        表明数据库中的某字段是否满足特定的条件。在这种情况下,当满足条件时,将自动选中复选框。
²        允许用户确定是否显示某对象,例如显示或隐藏网格线,或者子窗体。
1、checkBox元素必需的属性
复选框控件需要下表1所列的id属性之一。
表1:checkBox元素必需的属性
属性
何时使用
id
当创建自已的复选框时
idMso
当使用现有的Microsoft复选框时
idQ
当在命名空间之间创建共享的复选框时
每个复选框控件也需要表2所列出的onAction回调。
表2:checkBox元素必需的回调
动态属性
允许值
VBA回调签名
onAction
1至4096个字符
Sub OnAction(control As IRibbonControl,
pressed as Boolean)
2、带有回调签名的可选的静态属性和动态属性
复选框控件可以使用下表3列出的任一insert属性。
表3:checkBox元素可选的insert属性
INSERT属性
允许值
默认值
何时使用
insertAfterMso
有效的Mso组
在组末尾插入
在Microsoft控件之后插入
insertBeforeMso
有效的Mso组
在组末尾插入
在Microsoft控件之前插入
insertAfterQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之后插入
insertBeforeQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之前插入
也可以提供下表4所列的任何或所有的属性。
表4:checkBox元素可选的属性和回调
静态属性
动态属性
允许值
默认值
动态属性的VBA回调签名
description
getDescription
1至4096个字符
(none)
Sub GetDescription(control  As IRibbonControl,ByRef returnedVal)
enabled
getEnabled
true,false,1,0
true
Sub GetEnabled(control As
IRibbonControl,
ByRef returnedVal)
keytip
getKeytip
1至3个字符
(none)
Sub GetKeytip(control As                                             IRibbonControl,
ByRef returnedVal)
label
getLabel
1至1024个字符
(none)
Sub GetLabel(control As
IRibbonControl,
ByRef returnedVal)
(none)
getPressed
true,false,1,0
false
Sub GetPressed(control As IRibbonControl,
ByRef returnedVal)
screentip
getScreentip
1至1024个字符
(none)
Sub GetScreentip(control As IRibbonControl,
ByRef returnedVal)
supertip
getSupertip
1至1024个字符
(none)
Sub GetSupertip(control As IRibbonControl,
ByRef returnedVal)
tag
(none)
1至1024个字符
(none)
(none)
visible
getVisible
true,false,1,0
true
Sub GetVisible(control As IRibbonControl,
ByRef returnedVal)
3、checkBox元素允许的子对象
checkBox控件不支持任何子对象。
4、checkBox元素的父对象
在下列任何控件内都能放置checkBox控件:
Ø         box
Ø         dynamicMenu
Ø         group
Ø         menu
Ø         officeMenu
5、使用内置的复选框控件
(1)创建一个新的.xlsx文件,并将其保存为Excel Built In CheckBox Example.xlsx。
(2)关闭该文件并在CustomUI Editor中打开该文件。
(3)输入下列XML:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
<ribbon startFromScratch=“false“>
<tabs>
<tab id=“rxtabDemo“
label=“Demo“
insertBeforeMso=“TabHome“>
<group id=“rxgrpDemo“
label=“Demo Group“>
<checkBox idMso=“GridlinesExcel“/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
下图为上述代码创建的组:
您也可以修改该控件的名字,使用下面的XML代替相应的语句:
<checkBox idMso=“GridlinesExcel“
label=“Toggle Gridlines“/>
此时,显示的界面如下图所示:
6、创建自定义复选框控件
使用Excel时,便利的事情之一是迅速在工作簿中切换A1和R1C1样式公式的能力。在一些情形下,使用R1C1引用的公式将更好。下面的示例演示如何容易地快速切换两种引用形式的公式。
本示例在“公式”选项卡中添加一个控件,省去了必须通过Office菜单来找到该设置的复选框的麻烦。如下图所示,添加的新复选框控件在最右侧的“Other Settings”组中。
首先,新建一个工作簿,保存后关闭。然后使用CustomUI Editor输入下列XML代码:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“ onLoad=“rxIRibbonUI_onLoad“>
<ribbon startFromScratch=“false“>
<tabs>
<tab idMso=“TabFormulas“>
<group id=“rxgrpOtherSettings“
label=“Other Setting“
insertBeforeMso=“GroupNamedCells“>
<checkBox id=“rxchkR1C1“
label=“R1C1 Formulas“
getPressed=“rxchkR1C1_getPressed“
onAction=“rxchkR1C1_click“/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
注意,在XML代码的第一行,添加了onLoad属性,以便后面使用时捕获Ribbon对象。
单击“Generate Callbacks”按钮,复制生成的代码。关闭CustomUI Editor。重新打开Excel文件,并打开VBE,将复制的代码粘贴到标准模块中。
现在,该文件中有三个回调签名:rxIRibbonUI_onLoad,rxchkR1C1_getPressed,rxchkR1C1_click,其目的是:
Ø         rxIRibbonUI_onLoad存储RibbonUI对象,能够使控件无效以便随后强制更新控件。
Ø         当第一次激活“公式”选项卡(或使无效)并适当地设置复选框时触发rxchkR1C1_getPressed。
Ø         无论何时选中或取消选中复选框都将触发rxchkR1C1_click,其目的实际上是切换开关设置。
此外,rxIRibbonUI_onLoad需要自定义工作簿属性来操作,因此应该首先对其设置。在该工程的ThisWorkbook模块中,输入下列代码:
‘保存功能区和功能区控件状态的私有变量
Private pRibbonUI As IRibbonUI
Public Property Let RibbonUI(iRib As IRibbonUI)
‘设置RibbonUI属性以便后面使用
Set pRibbonUI = iRib
End Property
Public Property Get RibbonUI() As IRibbonUI
‘获取RibbonUI属性以供使用
Set RibbonUI = pRibbonUI
End Property
转到标准模块中,添加下列代码:
‘customUI.onLoad回调
Sub rxIRibbonUI_onLoad(ribbon As IRibbonUI)
‘设置RibbonUI为工作簿属性以供后面使用
ThisWorkbook.RibbonUI = ribbon
End Sub
此时,当装载该工作簿时,将捕获RibbonUI对象,并将可用于使之无效。
接下来,生成切换设置的宏。最容易的方法是先录制实现该功能的宏:打开宏录制器,选择“Office菜单—Excel选项—公式”,选中“R1C1引用样式”前的复选框。停止录制,转到VBE中查看录制的代码:
Application.ReferenceStyle = xlR1C1
这就是宏录制器能够帮助编写代码的一种情形,告诉确切地告诉你需要引用的对象。虽然仍需要对代码作一些修改,但至少知道从哪里开始以及正确的语法。
再在处理getPressed回调。主要是确定应用程序是否是R1C1模式,如果是则返回true。代码如下:
‘rxchkR1C1 getPressed回调
Sub rxchkR1C1_getPressed(control As IRibbonControl, ByRef returnedVal)
If Application.ReferenceStyle = xlR1C1 Then returnedVal = True
End Sub
下一步,处理单击复选框的回调。pressed参数告诉是否复选框被选中(pressed=true)或没有选中(pressed=false)。代码如下:
‘rxchkR1C1 onAction回调
Sub rxchkR1C1_click(control As IRibbonControl, pressed As Boolean)
Select Case pressed
Case True
Application.ReferenceStyle = xlR1C1
Case False
Application.ReferenceStyle = xlA1
End Select
End Sub
如果单击“公式”选项卡,将触发getPressed程序,设置复选框来表明当前所处的显示模式。否则,选择复选框来设置其为相反的状态。
但仍存在问题。假设有人通过“Excel选项”修改了复选框的值,此时选项卡中的复选框将不会被更新。
为解决这个问题,可以在无论何时激活新工作表时,强制更新该复选框。此时,使用使特定的控件(即rxchkR1C1 checkBox)无效的能力。
再转到ThisWorkbook代码模块,从代码窗口左侧下拉列表中选择Workbook,然后从右侧下拉列表中选择Sheet_Activate,添加代码如下:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
‘每次激活一个工作表时使该选项卡无效
ThisWorkbook.RibbonUI.InvalidateControl (”rxchkR1C1″)
End Sub
好了!保存并关闭后重新打开工作簿,然后输入公式来测试。
当然,在通过“Excel选项”设置R1C1引用样式后不会立即更新,您需要激活另一工作表后再返回该工作表,即可更新了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA专题10-23:使用VBA操控Excel界面之添加动态菜单
用powerpoint制作交互式多选题
关于Word在方框(□)中打勾的方法(
VBA窗体之单选和复选框的应用 | VBA实例教程
20.2.4 控件回调函数
在VB中如果用几个checkbox控件,请问怎么样才能使几个控件中只要一个被选中了,其他就不能被选中呢?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服