打开APP
userphoto
未登录

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

开通VIP
细品RibbonX(20):editBox控件详解
editBox控件允许用户输入文本,这为我们提供了一种允许用户输入的方便的方法。例如,可以使用editBox重命名Excel工作表。基本的概念是要求用户在editBox中输入,然后当其失去焦点且下一个控件激活之前发生事件。当然,也可以提供一个按钮,当单击该按钮后处理eidtBox控件中的内容。
1、editBox元素必需的属性
编辑框控件需要下表1所列的id属性之一。
表1:editBox元素必需的属性
属性
何时使用
id
当创建自已的编辑框时
idMso
当使用现有的Microsoft编辑框时
idQ
当在命名空间之间创建共享的编辑框时
编辑框控件也需要表2所列出的onAction回调。
表2:editBox元素必需的回调
动态属性
允许值
VBA回调签名
onChange
1至4096个字符
Sub OnChange(control As IRibbonControl,
text as String)
2、带有回调签名的可选的静态属性和动态属性
编辑框控件可以使用下表3列出的任一insert属性。
表3:editBox元素可选的insert属性
INSERT属性
允许值
默认值
何时使用
insertAfterMso
有效的Mso组
在组末尾插入
在Microsoft控件之后插入
insertBeforeMso
有效的Mso组
在组末尾插入
在Microsoft控件之前插入
insertAfterQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之后插入
insertBeforeQ
有效的组idQ
在组末尾插入
在共享的命名空间控件之前插入
也可以提供下表4所列的任何或所有的属性。
表4:editBox元素可选的属性和回调
静态属性
动态属性
允许值
默认值
动态属性的VBA回调签名
enabled
getEnabled
true,false,1,0
true
Sub GetEnabled(control As                                              IRibbonControl,
ByRef returnedVal)
image
getImage
1至1024个字符
(none)
Sub GetImage(control As IRibbonControl,
ByRef returnedVal)
imageMso
getImage
1至1024个字符
(none)
同上
keytip
getKeytip
1至3个字符
(none)
Sub GetKeytip(control As                                             IRibbonControl,
ByRef returnedVal)
label
getLabel
1至1024个字符
(none)
Sub GetLabel(control As
IRibbonControl,
ByRef returnedVal)
maxLength
(none)
1至1024个字符
1024
(none)
screentip
getScreentip
1至1024个字符
(none)
Sub GetScreentip(control As IRibbonControl,
ByRef returnedVal)
showImage
getShowImage
true,false,1,0
true
Sub GetShowImage(control As IRibbonControl,
ByRef returnedVal)
showLabel
getShowLabel
true,false,1,0
true
Sub GetShowLabel(control As IRibbonControl,
ByRef returenedVal)
sizeString
(none)
1至1024个字符
默认值为12
(none)
supertip
getSupertip
1至1024个字符
(none)
Sub GetSupertip(control As IRibbonControl,
ByRef returnedVal)
tag
(none)
1至1024个字符
(none)
(none)
(none)
getText
1至4096个字符
(none)
Sub GetText(control As IRibbonControl,
ByRef returnedVal)
visible
getVisible
true,false,1,0
true
Sub GetVisible(control As IRibbonControl,
ByRef returnedVal)
3、editBox元素允许的子对象
editBox控件不支持任何子对象。
4、editBox元素的父对象
仅能够在下列两个控件内放置editBox控件:
Ø         box
Ø         group
5、使用内置的编辑框控件
很有趣,没有方法自定义任何内置的editBox控件。
6、创建自定义编辑框控件
如前所述,编辑框为获取用户输入提供了一种有效的方式。下面的示例介绍一些常见的使用,例如修改文件或工作表的名字。
创建一个新的Excel工作簿并以.xlsm格式保存。打开VBE,插入一个标准模块,在其中创建到将来要对编辑框进行操作的宏代码。代码如下:
Private Function shtRename(sCallSheet As String) As Boolean
On Error Resume Next
ActiveSheet.Name = sCallSheet
If Err.Number = 0 Then shtRename = True
End Function
Public Sub RenameSheet()
Dim sNewSheetName As String
sNewSheetName = InputBox(”请为工作表输入一个新名字.”)
If shtRename(sNewSheetName) = False Then
MsgBox “发生问题了,不能够” & vbCrLf & _
“重命名工作表.请再试.”, _
vbOKOnly + vbCritical, “错误!”
End If
End Sub
下面简要解释上述两个过程。shtRename是一个用于重命名工作表的自定义函数。On Error语句在遇到错误时允许程序继续执行。该函数通过测试是否遇到错误,并返回真/假值表明是否重命名成功。
RenameSheet调用shtRename函数并测试是否成功,如果没有成功则通知用户。
要测试代码,运行RenameSheet过程,出现提示时输入名字,此时工作表将被重命名。如果提供了一个无效的参数,例如已存在的工作表字,那么将会返回错误消息。
现在,关闭Excel工作簿,再CustomUI Editor中打开该工作簿,输入下列XML代码:
<customUI xmlns=“http://schemas.microsoft.com/office/2006/01/customui“>
<ribbon startFromScratch=“false“>
<tabs>
<tab id=“rxtabCustom“
label=“My Tools“
insertBeforeMso=“TabHome“>
<group id=“rxgrpCustom“
label=“Worksheet“>
<editBox id=“rxtxtRename“
label=“Rename Sheet to:“
imageMso=“SignatureLineInsert“
keytip=“R“
sizeString=“123456789012345“
onChange=“rxtxtRename_Click“/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
技巧:在使用sizeString属性时,使用增加的数字输入字符数便于迅速判断允许的字符数。本例中,“123456789012345”是15个字符。
接下来,生成回调签名并复制代码,保存后关闭CustomUI Editor。
在Excel中重新打开工作簿,在界面中应该看到一个带有编辑框的自定义选项卡,如下图所示。
由于没有实现操作的回调代码,因此该编辑框不做任何操作。打开VBE,在标准模块中粘贴回调签名,并输入下列代码:
‘rxtxtRename onChange回调
Sub rxtxtRename_Click(control As IRibbonControl, text As String)
If shtRename(text) = False Then
MsgBox “发生问题了,不能够” & vbCrLf & _
“重命名工作表.请再试.”, _
vbOKOnly + vbCritical, “错误!”
End If
End Sub
好了!现在可以测试编辑框了。回到Excel界面,在自定义的编辑框中输入新的名字,查看工作表标签是否已被更新。
下面,再演示一个例子:在编辑框中输入数字后,当前单元格所在的列宽将作相应的调整。在CustomUI Editor中打开上例所示的工作簿,在其中添加下面的XML代码:
<group id=“rxgrpCustom1“
label=“Change Column Width“>
<editBox id=“rxtxtWidth“
label=“Width:“
sizeString=“1234567890“
onChange=“rxtxtWidth_Change“/>
</group>
生成回调签名并复制后,关闭CustomUI Editor。在Excel中打开该工作簿,在VBE中粘贴回调签名,并输入代码:
Dim dblWidth As Double
‘rxtxtWidth onChange回调
Sub rxtxtWidth_Change(control As IRibbonControl, text As String)
On Error Resume Next
dblWidth = CDbl(text)
If Err.Number <> 0 Then
MsgBox “对不起,必须输入数字值!”
text = “”
Else
ActiveCell.ColumnWidth = dblWidth
End If
End Sub
如下图所示,在编辑框中输入数值并回车后,当前单元格所在的列宽将根据数值进行调整。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA专题10-21:使用VBA操控Excel界面之禁用和启用控件、组和选项卡
20.2.4 控件回调函数
VB基础教程
vb textbox-文本框控件
VB程序设计菜单和对话框
详细讲述VB.NET开发控件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服