细品RibbonX(20):editBox控件详解

细品RibbonX(20):editBox控件详解

资料整理来自于论坛

完整版下载地址:http://download.csdn.net/download/nodeman/10264659


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,插入一个标准模块,在其中创建到将来要对编辑框进行操作的宏代码。代码如下:

PrivateFunction shtRename(sCallSheet As String) As Boolean

    On Error Resume Next

    ActiveSheet.Name = sCallSheet

    If Err.Number = 0 Then shtRename = True

EndFunction

 

PublicSub RenameSheet()

    Dim sNewSheetName As String

    sNewSheetName = InputBox(“请为工作表输入一个新名字.”)

    If shtRename(sNewSheetName) = False Then

        MsgBox “发生问题了,不能够” & vbCrLf & _

            “重命名工作表.请再试.”, _

            vbOKOnly + vbCritical, “错误!”

    End If

EndSub

下面简要解释上述两个过程。shtRename是一个用于重命名工作表的自定义函数。On Error语句在遇到错误时允许程序继续执行。该函数通过测试是否遇到错误,并返回真/假值表明是否重命名成功。

RenameSheet调用shtRename函数并测试是否成功,如果没有成功则通知用户。

要测试代码,运行RenameSheet过程,出现提示时输入名字,此时工作表将被重命名。如果提供了一个无效的参数,例如已存在的工作表字,那么将会返回错误消息。

现在,关闭Excel工作簿,再CustomUI Editor中打开该工作簿,输入下列XML代码:

<customUIxmlns=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>

                        <editBoxid=rxtxtRename

                                 label=Rename Sheet to:

                                 imageMso=SignatureLineInsert

                                 keytip=R

                                 sizeString=123456789012345

                                 onChange=rxtxtRename_Click/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>

技巧:在使用sizeString属性时,使用增加的数字输入字符数便于迅速判断允许的字符数。本例中,“123456789012345”是15个字符。

接下来,生成回调签名并复制代码,保存后关闭CustomUIEditor。

在Excel中重新打开工作簿,在界面中应该看到一个带有编辑框的自定义选项卡,如下图所示。

 

由于没有实现操作的回调代码,因此该编辑框不做任何操作。打开VBE,在标准模块中粘贴回调签名,并输入下列代码:

‘rxtxtRenameonChange回调

SubrxtxtRename_Click(control As IRibbonControl, text As String)

    If shtRename(text) = False Then

        MsgBox “发生问题了,不能够” & vbCrLf & _

            “重命名工作表.请再试.”, _

            vbOKOnly + vbCritical, “错误!”

    End If

EndSub

好了!现在可以测试编辑框了。回到Excel界面,在自定义的编辑框中输入新的名字,查看工作表标签是否已被更新。

下面,再演示一个例子:在编辑框中输入数字后,当前单元格所在的列宽将作相应的调整。在CustomUI Editor中打开上例所示的工作簿,在其中添加下面的XML代码:

                <group id=rxgrpCustom1

                       label=Change Column Width>

                       <editBoxid=rxtxtWidth

                                label=Width:

                                sizeString=1234567890

                                onChange=rxtxtWidth_Change/>

                </group>

生成回调签名并复制后,关闭CustomUIEditor。在Excel中打开该工作簿,在VBE中粘贴回调签名,并输入代码:

DimdblWidth As Double

‘rxtxtWidthonChange回调

SubrxtxtWidth_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

EndSub

如下图所示,在编辑框中输入数值并回车后,当前单元格所在的列宽将根据数值进行调整。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值