前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA专题10-15:使用VBA操控Excel界面之在功能区中添加自定义标签控件

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

作者头像
fanjy
发布2021-03-12 16:56:50
2.2K0
发布2021-03-12 16:56:50
举报
文章被收录于专栏:完美Excel完美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按钮。

生成一个回调:

代码语言: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社群下载这本书的完整中文版电子书。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档