VBA高级应用30例:Ribbon(功能区)的介绍

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。

本套教程共三册三十个专题,VBA高级应用30例:Ribbon(功能区)的介绍3d179606e50d1f133b4672ea440d9b77.jpeg

【分享成果,随喜正能量】面对不擅长的事,不要死磕,接纳自己有力所不及的地方。接纳并理解生命的局限性,也正是因为有局限,我们才有了成长的空间,找到内心深处存在的匮乏和阻碍,遇到自己不擅长的事,不执着,不对抗,平和的接纳自己的短板,或是努力去弥补短板,或是乐观的承认短板的存在,有针对性的完善自己,调整自己,做真实愉悦自在的自己。。

应用1在EXCEL中构建加载项

5Ribbon(功能区)的介绍

在Office的发展历程中,07版之前的版本,我们称之为低版本,到07版及之后我们称之为高版本,低版本中的菜单命令栏结构存在诸多不便,这就导致了在高版本Ribbon的诞生。

5e08d2225df65136b65019ea649e6fa1.jpeg

对EXCEL及WORD比较熟悉的朋友知道:在Ribbon中将命令按逻辑分组,将最常使用的命令放到用户最容易看到的地方且以最醒目的方式显示,将以前深藏的或难以找到的功能移到了界面上,大大增强了命令的可访问程度;Ribbon始终固定在屏幕上方,不能随意定制,因而界面是固定的,不会因某些操作而造成混乱。如果要定制Ribbon,则需要编程或第三方工具,且需要理解XML及其规则。

一般来说,大多数用户只使用了软件20%的功能,而这20%的功能对于特定的用户来说可能又各自不同,在Excel 2003中,我们可以根据自已的喜好自定义菜单和工具栏,方便自已使用最常用的功能。在Excel 2007中,如果不使用RibbonX,则只能在快速访问工具栏(QAT)中添加自已常用的命令。

由于不能随意定制,因此命令不总是能按照某人所需要的顺序随意排列。有时,实现一项任务可能需要花时间单击不同的选项卡,使用不同组中的命令。

其实我们在高版本的office中也可以实现自定义Ribbon,只是只能在设计时,而不是在运行时,通常不能动态添加选项卡、组或控件。同时我们也很容易移除定制的Ribbon,只要文档中不包含定制Ribbon的代码,都将恢复默认的Ribbon界面。而不像以前版本的Office,自定义菜单和命令栏后难以恢复,尤其对于新用户。并且,除了加载项、全局模板外,在某文档中的Ribbon定制不会影响新文档的Ribbon。

6自定义RibbonX(功能区)的实现

为了实现本专题加载项的要求我们要实现功能区的定制,这里我利用了一个Office RibbonX Editor的第三方软件来实现(这个软件会随教程提供),这里我只是列出实现本专题要求的代码部分,只是介绍,有兴趣的朋友可以通过其他途径学习。打开软件后,选择要自定义功能区的文件:

d3add11a82638fe2f3c7b230351cf327.jpeg

然后录入下面的代码:

                        getItemCount="mynzSheetToolsbtnSheets_Count"

                        getItemLabel="mynzSheetToolsbtnSheets_getItemLabel"

                        onAction="mynzSheetToolsbtnSheets_Click"

                        sizeString="MMMMMMMMM"

                        label="Sheets"

                        getSelectedItemIndex="mynzSheetToolsbtnSheets_getSelectedItemIndex"

                    />

                    label="Table Of Contents"

                    size="large"

                    onAction="mynzSheetToolsbtnInsertToc"

                    imageMso="CustomTableOfContentsGallery" />

代码截图:

65ae194d2ac474a4229788b439d2ca45.jpeg

最后保存。

代码的简单介绍:在这个xml中看到的项数是所谓的回调。这意味着Excel希望在相关工作簿中使用VBA代码。xml包含以下回调(callbacks):

①onLoad(加载工作簿时调用)

②getItemCount(返回下拉控件的项目数)

③getItemLabel(获取下拉列表的第n个项目)

④onAction(单击按钮或进行下拉选择时调用)

⑥GetSelectEditedIndex(调用以获取下拉列表中需要选择的项)

l在上述代码中有些复杂的过程名称(如“mynzpsheettoolsbtnssheets_Click”)。尤其是“mynzSheetTools”部分。在Excel实例中,回调名称必须是唯一的,是独一无二的。在Excel中打开的任何其他工作簿的子名称都不能与任何回调一致。否则,可能会导致其他工作簿中的例程被功能区调用!这就是为什么我在例程名称前面加上一些唯一标识包含RibbonX代码的工作簿前缀的原因。

我们要完成的各项任务罗列如下(这里只是罗列了任务,我们将在代码实现时填充代码):

Sub mynzSheetToolscustomUI_onLoad(ribbon As IRibbonUI)

End Sub

Sub mynzSheetToolsbtnInsertTOC(control As IRibbonControl)

End Sub

'Callback for mynzSheetToolsbtnSheets getItemCount

Sub mynzSheetToolsbtnSheets_Count(control As IRibbonControl, ByRef returnedVal)

End Sub

Public Sub mynzSheetToolsbtnSheets_getItemLabel(control As IRibbonControl, Index As Integer, ByRef returnedVal)

End Sub

'Callback for mynzSheetToolsbtnSheets getSelectedItemIndex

Sub mynzSheetToolsbtnSheets_getSelectedItemIndex(control As IRibbonControl, ByRef returnedVal)

End Sub

Sub mynzSheetToolsbtnSheets_Click(control As IRibbonControl, id As String, Index As Integer)

End Su

上面的代码将在功能区中添加一个“工作表工具”的任务,这个任务下面有一个选择工具和一个列表工具。

8b153357537b215c2d5089a441cc9915.jpeg

(待续)

d5c3d2789839ece794a77f09361ae322.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:


d8f7a7bfbe003a6e10a0d899ef80cf92.jpeg

336b26c338f1b027ccde6c718e2ca51f.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx性能调优策略

Nginx是一个高性能的Web服务器和反向代理服务器,常用于处理高并发的请求。以下是一些常见的Nginx性能调优策略: 一、调整worker_processes和worker_connections 在Nginx配置文件中,可以通过worker_processes和worker_connections参数来调整w…

JAVA将PDF转图片

前言 当今时代,PDF 文件已经成为了常用的文档格式。然而,在某些情况下,我们可能需要将 PDF 文件转换为图片格式,以便更方便地分享和使用。这时,我们可以使用 Java 编程语言来实现这个功能。Java 提供了许多库和工具&a…

城市安全守护者:分析无人机在交通领域的应用

随着科技的进步,无人机在交通领域的应用不断增加,为智慧交通管理提供了新便利。无人机凭借其灵活性,在违章取证、交通事故侦查、交通疏导等方面展现出巨大的应用潜力。无人机在交通领域的应用有哪些?跟着我们一探究竟。 1、违章取…

系列二十四、Spring设计模式之策略模式

一、前言 对于我们Java开发人员来说,Spring框架的重要性不言而喻,可以说Java领域之所以发展这么壮大,生态这么丰富,功能这么强大,是离不开Spring以及由其衍生出来的各种子模块的,正是由它们共同奠定了JavaE…

ECShop 4.x collection_listSQL注入

漏洞描述 ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序 影响版本:ecshop4.0.7及以下 漏洞环境及利用 docker环境搭建 访问8080端口,数据库主机为mysql&a…

如何确定先做哪件事情。

问题描述:工作或者生活中,有许多件事情,我们应该先做那件事情。 解决办法:重要紧急的四象限法则。具体如下所示: -----------------------------------------------------------------------------------------------…

基于OGG实现MySQL实时同步

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

海外ASO优化之如何优化应用程序预览

应用程序预览是演示应用的特性、功能的界面。通过简短视频吸引用户应用商店。由于应用程序预览自动播放,所以它们是帮助用户发现和了解我们应用的关键。 1、规划应用程序预览。 应用商店支持的多种语言,最多可以有三个应用预览,每个预览的时…

接口测试:Jmeter和Postman测试方法对比

前阶段做了一个小调查,发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今天我们就来谈谈一大部分人…

【C/PTA —— 12.指针1(课内实践)】

C/PTA —— 12.指针1(课内实践) 6-1 交换两个整数的值6-2 利用指针找最大值6-3 字符串的连接6-4 移动字母 6-1 交换两个整数的值 void fun(int* a, int* b) {int* tmp *a;*a *b;*b tmp; }6-2 利用指针找最大值 void findmax(int* px, int* py, int* p…

超声波雪深监测站冬季雪景的智能守护者

随着冬季的到来,白雪皑皑的景象让人感到无比美丽。然而,雪景的美丽却给人们的生活和出行带来了一定的困扰。雪的深度和分布是影响道路交通、公共安全和旅游体验的关键因素。为了解决这一问题,WX-XS1 超声波雪深监测站在冬季应运而生&#xff…

DjiTello + YoloV5的无人机的抽烟检测

一、效果展示 注:此项目纯作者自己原创,创作不易,不经同意不给予搬运权限,转发前请联系我,源码较大需要者评论获取,谢谢配合! 1、未启动飞行模型无人机的目标检测。 DjiTello YOLOV5抽烟检测 …

【自然语言处理】利用sklearn库函数绘制三维瑞士卷

一,原理介绍 sklearn.datasets.make_swiss_roll()函数提供了三维瑞士卷的数据集,我们可以利用他来生成瑞士卷,该函数的用法见sklearn官方文档:官网文档:sklearn.datasets.make_swiss_roll&…

语音机器人的两种常见业务场景

第一个业务场景 之前写过一篇语音机器人是真人录音好,还是TTS转语音更好的文章。今天再来说一说TTS一个很细微的场景。 假设一句话 这里是*****银行委托机构,您在*****银行的信用卡长期逾期至今仍未依照约定履行还款义务,为避免逃废债给您…

【bmp文件怎么批量改成JPG?】

操作 在需要修改格式的图片文件夹中新建一个TXT文本文档 文档中输入(ren *.原图片类型 *.需要修改成的图片类型) ren *.bmp *.jpg 输入完成后保存 将刚刚新建的文档重命名 修改为.bat后缀的文件 弹出弹窗,点击是 双击此程序,即可将文件夹中的BMP图…

RT-DETR改进 | 2023 | InnerEIoU、InnerSIoU、InnerWIoU、InnerDIoU等二十余种损失函数

论文地址:官方Inner-IoU论文地址点击即可跳转 官方代码地址:官方代码地址-官方只放出了两种结合方式CIoU、SIoU 本位改进地址: 文末提供完整代码块-包括InnerEIoU、InnerCIoU、InnerDIoU等七种结合方式和其AlphaIoU变种结合起来可以达到二十…

将用户的session改为分布式共享session

将用户的session改为分布式session 分布式session理解 使用分布式session的原因: 后台服务器是分布式的(比如要负载均衡),在A服务器请求的的信息(如用户登录信息)存在A的session中,B服务器并不…

百度手机浏览器关键词排名优化——提升关键词排名 开源百度小程序源码系统 附带完整的搭建教程

百度作为国内领先的搜索引擎,一直致力于为用户提供最优质的信息服务。在移动互联网时代,手机浏览器成为了用户获取信息的主要渠道。而小程序作为轻量级的应用程序,具有即用即走、无需下载等优势,越来越受到用户的青睐。然而&#…

Sass 语法详细介绍

文章目录 前言SASS缩进语法SASS的语法差异多线选择器注释import Mixin指令已弃用的语法后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Sass和Less 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正…