专栏首页VBA 学习VBE菜单——CommandBars对象

VBE菜单——CommandBars对象

我们在VBA编辑器里使用的菜单:

这些在VBA里也提供了相应的对象让我们去操作,这个就是CommandBars对象。

CommandBars对象

在VBIDE库下面的对象里,找到VBE对象,它下面就有CommandBars属性,这个属性就是菜单相关的,再点击下面:

会跳转到Office库下面的CommandBars对象,也就是说,这个菜单其实是Office通用的一种东西,也是微软制作好了给使用者调用就可以的:

你还可以点击下面的那个绿色的Office,跳转出来的就是:

Library Office
    C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL
    Microsoft Office 14.0 Object Library

说明Office库其实就是这个MSO.DLL(前面的是安装路径,可以会不一样)的东西,所有操作Office库对象的东西,其实都是调用这个dll。

你还可以打开一个Word,或者其他有VBA的Office套件,同样进入对象浏览器,查看这个Office库,它们指向的都是这个MSO.DLL。

我们写个代码遍历一下这个对象,看看在VBA编辑器里的这个菜单对象:

Sub testCMDB()
    Dim cmd As CommandBar
    
    For Each cmd In Application.VBE.CommandBars
        Debug.Print cmd.Name, cmd.NameLocal
    Next
End Sub

输出:

菜单条        菜单条
标准          标准
编辑          编辑
调试          调试
用户窗体      用户窗体
Document      文档
Project Window Insert       Project Window Insert
Toggle        Toggle
Code Window   Code Window
Code Window (Break)         Code Window (Break)
Watch Window  Watch Window
Immediate Window            Immediate Window
Locals Window Locals Window
Project Window              Project Window
Project Window (Break)      Project Window (Break)
Object Browser              Object Browser
MSForms       MSForms
MSForms Control             MSForms Control
MSForms Control Group       MSForms Control Group
MSForms Palette             MSForms Palette
MSForms Toolbox             MSForms Toolbox
MSForms MPC   MSForms MPC
MSForms DragDrop            MSForms DragDrop
Toolbox       Toolbox
Toolbox Group Toolbox Group
Property Browser            Property Browser
Property Browser            Property Browser
Docked Window Docked Window
Task Pane     任务窗格
               
Property Editor             属性编辑器
Office Clipboard            Office 剪贴板
XML Source    XML 源
Research      信息检索
XML Document  XML 文档
Signatures    签名
Document Actions            文档操作
Clip Art      剪贴画
Selection and Visibility    选择和可见性
Document Management         文档管理
Document Updates            文档更新
Mail Merge Panes            邮件合并窗格
Fax Service   传真服务
Meeting Workspace           会议工作区
Attachment Options          附件选项
Accessibility Checker       辅助功能检查器
Clipboard     剪贴板
Envelope      信封
System        系统
Online Meeting              联机会议

看到这个输出,可能和预想的不大一样吧,预想输出应该是:

文件(&F)
编辑(&E)
视图(&V)
插入(&I)
格式(&O)
调试(&D)
运行(&R)
工具(&T)
外接程序(&A)
窗口(&W)
帮助(&H)

这个的原因是什么呢?

其实看到这几个:

标准          标准
编辑          编辑
调试          调试
用户窗体      用户窗体

我们应该能够想到,在菜单的空白处,点击右键的时候,出来的就是这个:

这不正好一样吗,所以我们可以猜测,VBA编辑器里的菜单文件(&F)、编辑(&E)这些,其实不是CommandBars对象,他们应该是CommandBars对象的子对象,也就是CommandBarControl对象,使用代码再遍历一下CommandBars(1)试试:

Sub testCMDB1()
    Dim cmd As CommandBarControl
    
    For Each cmd In Application.VBE.CommandBars(1).Controls
        Debug.Print cmd.Caption
    Next
End Sub

这下输出就对了。

本文分享自微信公众号 - VBA 学习(xyjvba),作者:熊业军

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VBA编写Ribbon Custom UI编辑器08——实现ZIP的写入

    对Office文件的写入功能,因为并没有实现ZIP的压缩功能,程序只是将数据打包放入了ZIP中,customUI.xml并没有被压缩。

    xyj
  • VBA解压缩ZIP文件04——解析ZIP文件结构

    使用压缩软件打开一个ZIP文件的时候,可以看到这个ZIP文件里面的文件信息,如下是使用7z压缩软件打开一个xlsm Excel文件:

    xyj
  • 加载宏

    加载宏其实就是一个特殊一点的Excel带VBA程序的文件,最大特点就是不会显示出Excel表格的界面,只有在VBA编辑器里才能看到它的工程属性并编辑它的VBA代...

    xyj
  • TS 设计模式06 - 代理模式

    代理,顾名思义,就是替委托者处理事情。通过代理,客户不必要去接触真实的目标对象,转而去接触目标对象的代理,即可达成目的。

    love丁酥酥
  • 机器学习:基于网格的聚类算法

    俗话说:“物以类聚,人以群分”,在机器学习中,聚类算法是一种无监督分类算法。聚类算法很多,包括基于划分的聚类算法(如:kmeans),基于层次的聚类算法(如:B...

    张蓓
  • ICGC数据库使用

    TCGA是不错的癌症研究数据资源,但癌症研究不只是有TCGA。ICGC国际癌症基因组联盟,有亚洲、澳大利亚、欧洲、北美和南美17个行政区的89个项目,包括25,...

    生信宝典
  • DuerOS 3.0发布!为什么新一代操作系统这事儿百度干成了?

    持续两天的2018年百度AI开发者大会于7月4日开幕,从参会人数来看,今年大会规模相较于去年高出不少,这反映出AI产业的火热。AI开发者大会也是在AI上布局最早...

    罗超频道
  • 如何将单 master 升级为多 master 集群

    前面我们课程中的集群是单 master 的集群,对于生产环境风险太大了,非常有必要做一个高可用的集群(https://kubernetes.io/zh/docs...

    我是阳明
  • 频率计数器的特点介绍

    频率计数器是一种常用测量仪器,广泛应用在科研计量、工业生产、航空航天、武器、导弹等领域。本文将对频率计计数器的相关分类、特点和功能进行简单说明。

    时频专家
  • MySQL数据表生成Wiki格式数据字典

    苦咖啡

扫码关注云+社区

领取腾讯云代金券