VBA专题10-15:使用VBA操控Excel界面之在功能区中添加自定义标签控件
excelperfect
如果要在功能区选项卡中添加标签,那么执行下面的步骤:
1. 创建新工作簿并保存为启用宏的工作簿。
2. 关闭该工作簿,然后在CustomUI Editor中打开该工作簿。
3. 在CustomUI Editor中,单击“插入”并选择“Office 2007 Custom UI Part”。
4.选择“Insert | Sample XML | Custom Tab”,作一些修改,复制并粘贴下面的XML代码:
getLabel是一个回调属性,赋值VBA过程的名称,本例中为getLabel1回调过程。该过程在首次打开该工作簿时或者在使该控件无效时执行。
有3种使控件无效的方法:
第1种:InvalidateControlMso可以使指定的内置控件无效。(不适用于Excel 2007)
第2种:InvalidateControl可以使指定的自定义控件无效。
第3种:Invalidate可以使功能区中所有的内置和自定义控件无效。
上述3种方法不仅能够使控件无效,而且可以使组和选项卡无效。我们称它们(控件、组和选项卡)为元素。元素可能有多个回调属性。一旦使某元素无效,任何与该元素相关的数据就被销毁,并且通过调用所有的在XML代码中声明的该元素的回调属性引用的VBA过程来自动刷新该元素。因此,要提高效率,应仅使必需的元素无效。在后面的文章中,将会列举使元素无效的例子。
5. 单击工具栏中的Validation按钮来检查是否有错误。
6. 单击Generate Callbacks按钮。
生成一个回调:
'Callback for label1 getLabel
Sub getLabel1(control As IRibbonControl, ByRef returnedVal)
End Sub
复制回调代码。之后,要将其粘贴到工作簿的VBA模块中。
7. 保存并关闭该文件。
8. 在Excel中打开该工作簿文件。
因为是第一次在Excel中打开该文件,会得到关于getLabel1的错误消息的提示,因为在标准的VBA模块中还没有getLabel1回调过程。此时,单击“确定”关闭错误消息。
9. 按Alt+F11键打开VBE。
10. 插入一个标准VBA模块并粘贴刚才复制的回调代码。
11. 将代码修改如下:
'Callback for label1 getLabelSub getLabel1(control As IRibbonControl, ByRef returnedVal) If Time() < 0.5 Then returnedVal = '早上好, ' & Application.UserName Else returnedVal = '美好的一天, ' & Application.UserName End IfEnd Sub
关闭后重新打开工作簿,在自定义选项卡中的标签控件显示如下图:
说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。