ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: fanjy

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:28 | 显示全部楼层
自定义选项卡
1、创建自定义选项卡
创建自定义选项卡时,不需要引用idMso,而是为新选项卡指定一个唯一的id属性。
继续上面的练习,在Excel中关闭工作簿文件,在customUI Editor中重新打开该文件,输入下面的代码:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="rxtabDemo" label="Demo">
            </tab>
        </tabs>
    </ribbon>
</customUI>
验证代码并关闭该文件,然后在Excel中重新打开该工作簿,此时在功能区中将增加一个新的自定义选项卡,如下图所示。
 
2、放置自定义选项卡
例如下面的代码,将自定义选项卡放置在“开始”选项卡之后。
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="rxtabDemo"
               label="Demo"
               insertAfterMso="TabHome">
            </tab>
        </tabs>
    </ribbon>
</customUI>
如下图所示:

注意,当插入多个控件时,将按照在XML代码中编写的顺序插入。

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
group元素
group元素的作用是为实际的按钮、复选框、菜单和其他允许在功能区中配置的命令创建占位符。
1、group元素必需的属性
与tab元素一样,每个组需要一个唯一的id属性,如下表所示。
表:group元素的id属性
属性          何时使用
id            当创建自已的组时
idMso        当使用现有的Microsoft组时
idQ          当在共享的命名空间之间创建组时
2、带有回调签名的可选的静态的和动态的属性
要设置某个组相对于任何其他现有的组的位置,需要指定下表列出的insert属性之一。
表:group控件可选的insert属性
insert属性      允许值        默认值          何时使用
insertAfterMso  有效的Mso组 最近的组之后插入 Microsoft组之后插入
insertBeforeMso 有效的Mso组 最近的组之后插入 Microsoft组之前插入
insertAfterQ    有效的组idQ  最近的组之后插入 共享的命名空间组之后插入
insertBeforeQ   有效的组idQ  最近的组之后插入 共享的命名空间组之前插入
group控件也接受下表所列出的任何或所有的属性。
表:group控件可选的属性和回调
静态属性   动态属性  允许值          默认值    对动态属性的VBA回调签名
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)
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、group元素允许的子对象
group元素能够包含下列对象的任意组合:
box
button
buttonGroup
checkBox
comboBox
control
dialogBoxLauncher
dropdown
editBox
gallery
labelControl
menu
separator
splitButton
toggleButton
下面是创建一个自定义组的XML代码:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="rxtabDemo"
               label="Demo"
               insertAfterMso="TabHome">
                <group id="rxgrpDemo"
                       label="Demo Group"
                       keytip="D"
                       screentip="This is my screentip"
                       supertip="This is my supertip">
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
结果如下图所示:
 
注意,在上面的XML中,仅label属性的值出现在功能区中。大多数可选的属性例如imageMso,在组控件中将没有可见的效果。因此,经调试后,可以忽略一些可选的属性。

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
内置组
使用内置组,仍然能够提供内置功能。也提供了将经常使用的控件组合在一起的功能。
1、引用内置组
与选项卡相似,通过引用其id属性识别自定义组,通过引用其idMso属性识别内置组。
下表列出了Excel、Access和Word中的一些内置组。
表:在Excel、Access和Word中通用的组
显示的名称      idMso名称
剪贴板          GroupClipboard
字体            GroupFont
形状            GroupShapes
例如,隐藏Word中的剪贴板组的XML如下:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabHome">
                <group idMso="GroupClipboard"
                       visible="false">
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
结果如下图:

2、在自定义选项卡中使用内置组
能够在自已的选项卡中使用内置组,这是Office 2007的一项关键功能。
Microsoft虽然花费了大量的人力和财力研究用户的使用习惯,但默认的控件顺序不会总是满足特定的需求。因此,使用重复使用Microsoft内置组的能力,可以很容易地在单个选项卡中放置最常用的命令,这样更方便于使用且随时可见,避免在功能区选项卡之间来回切换。
在许多场合,创建一个自定义且经过整理的选项卡能够节省无数次的键击并极大地提高生产力。
例如,下表列出了在Excel中一些经常需要的组。
表:在Excel中常用的审核工具的位置
组名      默认的选项卡               名称
剪贴板      开始                   GroupClipboard
字体        开始                   GroupFont
公式审核    公式                   GroupFormulaAuditing
批注        审阅                   GroupComments
编辑        开始                   GroupEditingExcel
现在,创建一个包含上述组的自定义选项卡,其XML代码如下:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="rxtabMyTools"
                 label="My Tools"
                 insertBeforeMso="TabHome">
                 <group idMso="GroupClipboard"/>
                 <group idMso="GroupFont"/>
                 <group idMso="GroupFormulaAuditing"/>
                 <group idMso="GroupComments"/>
                 <group idMso="GroupEditingExcel"/>
            </tab>
        </tabs>
    </ribbon>
</customUI>
注意,在上面的代码中,group元素没有使用单独的结束标签,而是在行尾使用/>结束。这样的编写非常简洁。此时,结果如下图所示。

注意,在自定义组中引用的内置组只是原来组的副本,内置组仍然在原来的位置。
[此贴子已经被作者于2008-4-19 10:35:59编辑过]

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记
x60vPWZk.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
自定义组
1、创建自定义组
与tab元素一样,通过指定一个唯一的id属性来创建自定义组。而不是引用内置组的idMso。
继续上面的示例,关闭Excel文件,在CustomUI Editor中重新打开该文件,在最后的一个group标签之后,添加下面的XML代码:
<group id="rxgrpMyGroup"
        label="My Group">
</group>
注意,上述代码并没有在同一行中开始和结束代码。这样,方便在其中添加其他控件,例如按钮、复选框或动态菜单。
验证代码后保存文件并关闭CustomUI Editor。再打开Excel,此时,添加了一个空组,如下图所示。
 
2、放置自定义组
有时,可能想让自定义的组放置在指定的位置或按指定的顺序排列。
(1)在XML代码中,按想要显示的顺序编写代码。
(2)使用insertBeforeMso属性或insertAfterMso属性。
3、在内置选项卡中的自定义组
以Word 2007为例。
(1)创建一个新的Word文档并保存,然后关闭该文档。
(2)在CustomUI Editor中打开该文档,并输入下面的代码:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabHome">
                <group id="rxgrpMyGroup"
                      label="My Group"
                      insertBeforeMso="GroupFont">
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
(3)验证代码并保存代码,然后关闭CustomUI Editor。
(4)在Word中重新打开该文件,现在看到在“开始”选项卡中有一个自定义组,如下图所示。

此时,在内置的“开始”选项卡中添加了自定义组“My Group”,并且将该组放置在第二位,即“字体”组之前。然后,您可以在自定义组中添加想要的控件了!

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:39 | 显示全部楼层

RibbonX:自定义Office 2007功能区
第4章 介绍VBA阅读笔记

对于有一定VBA基础的人来说,本章较简单。因此,我的笔记相对也较简单,只是对内容进行粗略地概述,或者记下需要注意的事项及关键点。

使用XML可以自定义功能区,然而,要创建真正的自定义解决方案,需要添加功能,此时就需要VBA啦。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
开始学习VBA
学习VBA的一些基本原理和编程规则。
一般而言,在Excel和Word中VBA过程的一组指令称作宏。然而,Access同时有称作宏的对象,提供了一些预先确定的在工程中容易使用的指令。因此,不应该将Excel和Word的宏与Access的宏相混淆。此外,在Excel和Word中有宏录制器,而Access则没有。然而,Access 2007有一个非常好的宏设计器,包括为用户提供的宏名、条件、动作、参数、批注等字段。并且,从Access 2007开始,Access向导产生宏代替VBA代码。
虽然VBA不是用于编程Ribbon的唯一语言(也可以使用诸如C#、C++、VB.Net和VB),但本书只探讨VBA,因为VBA不仅强大,而且对拥有Microsoft Office的每个人都是可用的。
1、什么是VBA
VBA是一种编程语言,能够使人们处理使用内置工具不可能完成的功能,并且VBA常用于改进和自动化某项任务。
一般说来,对于Excel和Word,VBA能够被分成两类代码:可录制的代码和不可录制的代码。这两类代码不会应用到Access,因为它没有提供宏录制功能。此外,虽然Access向导产生宏,但向导没有联系到Ribbon定制。因此,使用Access的讨论和示例大多数取决于VBA,但也有一些示例展示如何使用Access宏对象。
2、启用宏的文档
在需要代码的功能区定制中,由于需要允许运行宏,因此应该将Excel工作簿和Word文档保存为启用宏的文档。
3、使用Visual Basic Editor(VBE)
在VBE中编写VBA代码。VBE窗口中重要的元素包括:
(1)代码窗口─—输入VBA代码的地方或者放置录制的代码的地方。每个主要的对象都有自已的代码窗口。标准模块和类模块也有自已的代码窗口。
(2)代码窗口关闭按钮─—使用该按钮关闭一个打开对象的代码窗口。
(3)代码窗口最大化/恢复按钮─—使用该按钮最大化/恢复某对象的代码窗口。
(4)代码窗口最小化按钮─—使用该按钮最小化打开对象的代码窗口
(5)立即窗口─—使用立即窗口调试按钮。从代码中发送结果到这个窗口或者可以直接在窗口中输入指令
(6)菜单栏─—VBE菜单栏仍然保留与以前版本相同,不仅是内容而且外观
(7)工程资源管理器─—工程对象的容器
(8)属性窗口─—显示当前对象的可用属性
(9)标题栏─—如果不清楚代码窗口指向的对象,看看标题栏,这里有它的名称
(10)工具栏─—包含有用的命令,帮助更容易编写代码
(11)VBE关闭按钮─—使用该按钮关闭VBE工作环境
(12)VBE最大/恢复按钮─—使用该按钮来最大化/恢复VBE工作环境
(13)VBE最小化按钮─—使用该按钮最小化VBE工作环境

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
为Excel和Word录制宏
了解Excel或Word对象模型最好的方式是录制宏。
录制宏时在Excel和Word之间一个重大的区别是,当录制操作时Excel允许使用鼠标,相反Word仅录制输入。这意味着虽然能够在Excel中使用鼠标选择文本,然后执行对文本的某种操作,并且这些过程将被录制,但是在Word中录制宏时不能在文档窗口使用鼠标。
虽然在文档中不能使用鼠标执行操作,但是可以使用鼠标选择功能区中的命令和/或选择UI中的元素。
1、一个录制示例
本节介绍一个录制宏的简单示例。假设在Excel中有某项计算,总要插入一个特定的批注。可以录制与插入批注相关的操作,然后重复利用该宏,而不需要每次都输入相同的批注。
(1)在“开发工具”选项卡的“代码”组中,单击“录制宏”,打开“录制新宏”对话框。
(2)输入宏名,这里使用“InsertComment”。
(3)指定快捷键,这里使用Ctrl+Shift+C。
(4)单击“确定”开始录制。
(5)选择需要插入批注的单元格。
(6)单击“审阅”选项卡的“批注”组中的“新建批注”。
(7)输入批注,这里是“This is the comment!”。
(8)完成后,单击“开发工具”选项卡的“代码”组中的“停止录制”。
现在,应该在VBE中看到如下图所示的窗口:

2、编辑录制的宏
录制的宏将总是在单元格C4中插入批注,而现在想将批注插入到所选择的单元格中。并且,将试图覆盖已存在的批注时,将会产生错误。
因此,现在需要修改录制的代码,使代码为重复使用切实可行。此时,需要:(1)在添加新批注之前删除旧的批注;(2)确保批注总是可见的。代码如下:
Sub InsertComment()
' InsertComment Macro
' 快捷键: Ctrl+Shift+C
    Range("C4").Comment.Delete
    Range("C4").AddComment
    Range("C4").Comment.Visible = True
    Range("C4").Comment.Text Text:="fanjy:" & Chr(10) & "This is a comment!"
End Sub
由于在单元格C4中已经存在批注,因此在插入新批注前使用Comment对象的Delete方法将之清除。然而,如果在该单元格中没有批注,则会产生错误(后面将会介绍错误处理)。要在活动单元格中放置批注,则在代码中使用ActiveCell替换Range(“A1”)。
注意,Comment对象没有Add方法,而是AddComment方法。可以直接使用该方法添加批注,如:Range(“A1”).AddComment (“fanjy:” & Chr(10) & “This is a comment!”)
3、在录制后编辑宏选项
在Excel和Word中稍有不同。在Word中需要调用“Word选项”中的“自定义”选项卡。

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

[分享]《RibbonX:自定义Office 2007功能区》阅读笔记

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:41 | 显示全部楼层
子过程和函数
1、对象模型(OM)
(1)最高级别的对象是Application对象,通常称之为根对象。
(2)对象模型基本上是一组对象和对象的集合,公开用于执行各种各样操作的属性和方法。
(3)为使用对象模型,理解概念和语法是重要的。
(4)例如,假设希望在Word文档中添加一个表格,必须包含从根对象到希望使用的对象的完整路径:
Application.Documents(“Document1”).Tables.Add
(5)也能够使用低层级对象的Parent属性,从底层级的对象到高层级的对象。例如:
MsgBox ThisWorkbook.Parent
将在消息框中显示“Microsoft Excel”。
2、子过程
子过程主要是一组指令,用来完成某项任务或者一系列任务。例如,在Access中创建打开报表的过程或者在Excel中创建将公式转换为文本的过程。
下面是三个示例。
(Excel示例)
Sub WorkingWithCell()
ThisWorkbook.Windows(1).ActiveCell.ClearContents
ThisWorkbook.Windows(1).ActiveCell.Value=Now()
ThisWorkbook.Windows(1).ActiveCell.NumberFormat=”dd-mm-yyyy hh:mm:ss”
End Sub
(Access示例)
Private Sub cmdExit_Click()
CloseCurrentDatabase
End Sub
(Word示例)
Sub TableFit()
ThisDocument.Tables(1).AllowAutoFit=True
End Sub
第一个示例处理单元格。第二个示例数据库。第三个示例处理表格。看了这三个示例后,您将认识到一些重要的对象:
(1)ThisWorkbook:本身指Excel,引用包含代码的工作簿。有许多其他方式引用工作簿,但是如果需要处理工作簿级别的元素,则使用该对象。(ThisWorkbook也是Application对象的属性,返回一个Workbook对象)
(2)ThisDocument:使用该对象意味着访问包含代码的文档的相关属性和方法。
(3)CurrentProject:用于获取包含代码的数据库项目的重要信息,例如连接字符串、路径等等。
例如,使用ThisWorkbook来识别工作簿的作者:
Sub ThisWB()
MsgBox ThisWorkbook.BuiltinDocumentProperties(“Author”)
End Sub
使用下面的代码从数据库项目中获取完整的连接资料:
Sub connectionDetails()
MsgBox CurrentProject.Connection
End Sub
3、函数
与过程不一样,函数通常用于返回值。例如,如果希望获得计算的结果,那么使用函数。
Function nthRoot(number As Double,nth As Integer) As Double
nthRoot=number ^ (1/nth)
End Function
能够直接地或者间接地使用函数。意味着能够在窗体或者工作表中使用函数计算值,或者能够从VBA工程里的另一个过程中调用函数。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:42 | 显示全部楼层
VBA编码技术
1、循环语句
(1)For-Next循环
语法:
For counter=start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
注意:不能指定一个Boolean型或者数组作为counter。step可以是负值。
语法:
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
注意,element代表用于遍历集合或数组中的元素。对于集合,element可以仅为Variant型变量或者任何特定的对象变量(如Worksheet、Document、Database)。对于数组,element仅为Variant变量。
例如,在对Windows Script Hosting模型引用后,下面的过程读取Excel工作簿所在文件夹中的每个文件,并在当前工作表中列出:
Sub listFileNames()
Dim fsoObj       As  New FileSystemObject
Dim fsoFolder     As  Folder
Dim fsoFile       As  File
Dim lngRow      As  Long
Dim strPath       As  String
strPath=ThisWorkbook.Path
Set fsoFolder=fsoObj.GetFolder(strPath)
lngRow=1
For Each fsoFile In fsoFolder.Files
    ActiveSheet.Cells(lngRow,1)=fsoFile.Name
    lngRow=lngRow+1
Next fsoFile
Set fsoFile=Nothing
Set fsoObj=Nothing
End Sub
注意,此时必须先保存该工作簿。
(2)Do-While/Do-Until循环
在进入循环之前指定条件,语法为:
Do [{While | Until } condition]
[statements]
[Exit Do]
[statements]
Loop
在执行循环后判断条件,语法为:
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until } condition]
这两类循环在希望进行循环直到满足某条件时是有用的,例如:
Sub DoUntilLoop()
Dim lngRow As Long
lngRow=1
Do Until IsEmpty(ActiveSheet.Cells(lngRow,1))
    lngRow=lngRow+1
Loop
Msgbox ActiveSheet.Cells(lngRow,1).Address
End Sub
上面的循环将一直发生,直至到达活动工作表第一列中第一个空单元格,然后在消息框中显示该单元格的地址。
下面的示例应用于Access(如果Excel和Word访问记录集并遍历时,则也能应用于这两个应用程序):
Sub DoWhileLoop()
Do While (Not(rst.EOF))
    rst.MoveNext
Loop
End Sub
当没有到文件结尾时上述循环一直发生。
Do While循的一种变体如下:
While (Not(rst.EOF))
rst.MoveNext
Wend
(3)With … End With语句
当需要对单个的对象或用户自定义类型执行一系列语句时,该语句相当有用。语法为:
With object
[statements]
End With
其中,object表示对象名称或用户自定义类型。当对相同的对象或属性执行一系列语句时,With语句的优势时不需要重复对象名称。
例如,重写上面的WorkingWithCell过程如下:
With ActiveCell
.ClearContents
.Value=Now()
.NumberFormat=”dd-mm-yyyy hh:mm:ss”
End With
使用With语句,不仅节省输入代码时间,并且结构化代码使之层次分明,因而使代码更容易阅读和理解,并且能使代码执行得更快。
(4)If…Then…Else…End If语句
根据满足的条件,执行相应的语句。语法为:
If condition Then [statements] [Else elsestatements]
或:
If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements]
[Else
[elsestatements]]
End If
例如,下面的代码比较字符串:
Function isLike(varValue As Variant,strLike As Variant) As Boolean
If varValue Like strLike Then
    isLike=True
Else
    isLike=False
End If
End Function
在过程中调用函数:
Sub compare()
MsgBox isLike(“robson”,”rob*”)
End Sub
(5)Select Case语句
使用该语句能够使多条件判断更简洁。语法为:
Select Case testexpression
[Case expressionlist-n
    [statements-n]
[Case Else
    [elsestatements]]
End Select
其中,expression-n有下列形式:expression,expression To expression,Is comparison operator expression。
注意:(1)表达式文本与Case后的值必须正确匹配,并且区分大小写。
(2)如果表达式文本与多个Case后的值匹配,则只执行第一个匹配的Case后的语句。
(3)当没有匹配值时,执行Case Else后的语句。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-4-19 10:43 | 显示全部楼层
编写自已的代码
1、命名约定
使用约定的规则命名,将使他人和您更容易阅读和理解代码;降低了使用预留字或特定字符的风险;避免对象之间的命名冲突;更容易向他人解释代码。
此外,当多人共同为一个项目工作或者需要与他人共享代码时,遵守标准的命名约定是有利的。
本书为XML代码采用的命名约定为:
(1)前缀:为功能区定制代码使用rx以区分其他VBA代码。
(2)标记:采用RVBA标记系统来标记功能区控件。例如,在VBA中label控件的标记为lbl,而在这里的功能区命名约定中使用rxlbl。这样,让我们知道该标签来自于功能区而不是VBA工程内的标签控件。
(3)基本的名称:即控件的描述。例如,有一个功能区控件并定义其前缀和标记为rxbtn,然而该控件做什么呢?如果是一个演示按钮,则将其命名为rxbtnDemo,使之更有意义。
(4)事件后缀:已经有一个按钮,但当用户单击该按钮后会发生什么?将触发事件,此时使用通用的VBA事件后缀来描述该行为。因此,如果Demo按钮附加了onAction属性,那么过程名为rxbtnDemo_click。
(5)共享的事件:如上例,Demo按钮有单击事件。然而,如果希望与其他按钮共享该事件,或者其他控件有onAction属性。此时使用一般的标记来指明onAction属性在许多不同的控件中共享。例如:rxshared_click。现在,应该知道单击被许多具有onAction属性的其他控件共享。
(6)Repurpose后缀:前面已提到使用事件后缀来匹配VBA的事件。然而,当使用内置命令时,可能希望使用onAction属性重新使用其行为。由于onAction返回click后缀,不能让代码阅读者知道其是一个被重新使用的内置命令。此时,在rx前缀后面跟随控件的idMso属性作为基本的名称,然后加上下划线和单词“Repurpose”表示其为重新使用的内置命令。例如:rxFileSave_Repurpose表示重新FileSave命令来执行某些其他操作。
2、数据类型
包括Byte、Boolean、Integer、Long、Single、Double、Currency、Decimal、Date、Object、String、Variant、User-Defined。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 16:49 , Processed in 0.048142 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表