VBA专题10-15:使用VBA操控Excel界面之在功能区中添加自定义标签控件

2021-03-12 16:56:50 浏览数 (1)

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按钮。

生成一个回调:

代码语言:javascript复制
'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. 将代码修改如下:

代码语言:javascript复制
'Callback for label1 getLabel
Sub getLabel1(control As IRibbonControl, ByRef returnedVal)
    If Time() < 0.5 Then
        returnedVal = "早上好, " & Application.UserName
    Else
        returnedVal = "美好的一天, " & Application.UserName
    End If
End Sub

关闭后重新打开工作簿,在自定义选项卡中的标签控件显示如下图:

说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 Hours:Changingworkbook appearance》,仅供学习研究。注:如果你有兴趣,你可以到知识星球App的完美Excel社群下载这本书的完整中文版电子书。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

0 人点赞