下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关。这里的自定义命令是指程序员自已编写的VBA过程。
添加按钮
如果要在内置功能区选项卡中添加两个按钮,在单击这些按钮时会调用VBA过程,那么执行下面的步骤:
1. 创建新工作簿并保存为启用宏的工作簿。
2. 关闭该工作簿,然后在CustomUI Editor中打开该工作簿。
3. 在CustomUI Editor中,单击“插入”并选择“Office 2007 Custom UI Part”。
4. 选择“Insert | Sample XML | Custom Tab”,作一些修改,或者复制并粘贴下面的XML代码,在功能区“插入”选项卡中添加包含两个按钮(标记为Insert 0和Insert 1,带有Mso图像0和1)的标记为Attn Sh的组。
选项卡元素:
idMso属性的值是内置选项卡的名称。本例中,TabInsert是“插入”选项卡的idMso。如果要在其他内置选项卡中插入按钮,那就使用其他选项卡的idMso替换掉TabInsert。
组元素:
group元素中label属性的值指定功能区中组显示的文本。
按钮元素:
其imageMso属性为按钮指定预定义的图像。如果要使用自已设计的图像,只需使用image属性替换掉imageMso属性。
onAction属性是一个回调属性。该属性的值是在单击按钮时要执行的VBA过程的名称。
5. 单击工具栏中的Validation按钮来检查是否有错误。
6. 单击Generate Callbacks按钮。
由于XML代码中有两个回调属性(每个按钮一个),因此生成两个回调:
'Callback for BtnInsert0onAction
SubInsert0(control As IRibbonControl)
End Sub
'Callback for BtnInsert1onAction
SubInsert1(control As IRibbonControl)
End Sub
复制回调代码。之后,要将其粘贴到工作簿的VBA模块中。
7. 保存并关闭该文件。
8. 在Excel中打开该工作簿文件。
9. 按Alt F11键打开VBE。
10. 插入一个标准VBA模块并粘贴刚才复制的回调代码。
11. 添加一些代码来测试这两个按钮:
'Callbackfor BtnInsert0 onAction
Sub Insert0(control AsIRibbonControl)
With control
MsgBox "单击了" & .Context.Caption &"中的" & .ID
End With
End Sub
'Callbackfor BtnInsert1 onAction
Sub Insert1(control AsIRibbonControl)
With control
MsgBox "单击了" & .Context.Caption &"中的" & .ID
End With
End Sub
单击按钮时会显示:
在Insert0回调过程中的参数control有3个属性:
ID:在XML代码中指定的控件的id。
Context:包含该功能区的活动窗口。Context.Caption是出现在该窗口标题栏中的名称,本例中,为该工作簿的名称。
Tag:XML代码中元素(本例中是按钮元素)的tag属性的值。通常,标签用于识别控件执行的操作。
下图展示在功能区的“插入”选项卡出现了含有两个按钮的Attn Sh组。
说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。