网站首页 > 技术文章 正文
Excel2007中,功能区替代了以前的分层菜单、工具栏和任务窗格系统。
自定义菜单栏、工具栏的效果:
主要是使用CommandBars对象模型:
VBA代码:
1 自定义菜单命令组
'自定义菜单命令组
Public Sub creatediyMenu()
For Each con In Application.CommandBars("Data").Controls
con.Delete
Next
Dim diyMenu As Object
Dim MenuItem As Variant
Dim Menusub As Variant
MenuItem = Array( _
"首行标题和冻结及边框", "创建工作表目录", _
"工作表按名称排序", _
"设置页眉页脚", _
"隔行插入空行", "删除空行", "删除选定列空单元格的行", _
"删除超级链接", _
"删除形状(图形、文本框等)", _
"设置最后一个字符为上标", _
"多条件排序(ABCD列)", _
"多条件筛选(AB列)", _
"Setting", _
"选区字符统计", _
"借书记录", _
"定位到D列最后一行", _
"显示或隐藏批注", "删除当前表中批注")
Menusub = Array( _
"PERSONAL.XLSB!行操作.首行标题和冻结及边框", _
"PERSONAL.XLSB!表操作.创建工作表目录", _
"PERSONAL.XLSB!表操作.sortShtByName", _
"PERSONAL.XLSB!表操作.设置页眉页脚", _
"PERSONAL.XLSB!行操作.insertBlankRow", _
"PERSONAL.XLSB!行操作.DeleteBlankRow", _
"PERSONAL.XLSB!行操作.批量删除空行_先选定列", _
"PERSONAL.XLSB!数据编辑.删除超级链接", _
"PERSONAL.XLSB!数据编辑.删除形状", _
"PERSONAL.XLSB!数据编辑.设置单元格最后一个字符为上标", _
"PERSONAL.XLSB!排序与筛选和统计.MoreKeySort", _
"PERSONAL.XLSB!排序与筛选和统计.Filter_MoreCriteria", _
"PERSONAL.XLSB!自定义菜单.ExcelSetting", _
"PERSONAL.XLSB!排序与筛选和统计.textcount", _
"PERSONAL.XLSB!借书记录.借书记录", "PERSONAL.XLSB!自定义菜单.newRowPos", _
"PERSONAL.XLSB!排序与筛选和统计.显示或隐藏批注", _
"PERSONAL.XLSB!排序与筛选和统计.删除当前表中批注")
For i = 0 To UBound(MenuItem)
Set diyMenu = Application.CommandBars("Data").Controls.Add(Type:=msoControlButton)
With diyMenu
.Caption = MenuItem(i)
.OnAction = Menusub(i)
End With
Next i
Set diyMenu = Nothing
End Sub
2 插入自定义工具栏命令
Sub 插入自定义工具栏命令()
Dim cmb As Office.CommandBar
Dim bt As Office.CommandBarButton
'Call 删除菜单栏
Set cmb = Application.CommandBars("Formatting")
Set bt = cmb.Controls.Add(Type:=Office.MsoControlType.msoControlButton)
With bt
.Caption = "借书记录"
.FaceId = 2560
.Style = msoButtonIconAndCaption
.OnAction = "PERSONAL.XLSB!借书记录.借书记录"
End With
End Sub
'下面的Right 过程是自定义按钮的回调函数?
Sub Right()
Selection.HorizontalAlignment = Excel.Constants.xlRight
End Sub
3 创建新的菜单栏
Const strBarName As String = "我的菜单栏"
Public Sub 创建新的菜单栏()
Dim cbr As CommandBar, ctl As CommandBarControl
Call 删除菜单栏
'For Each con In Application.CommandBars(strBarName).Controls
'con.Delete
'Next
Set cbr = Application.CommandBars.Add(strBarName, MenuBar:=True)
cbr.Visible = True
Set ctl = Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30002)
ctl.Copy Application.CommandBars(strBarName) ' 30002文件下拉菜单
Set ctl = Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30003)
'Set ctl = Application.CommandBars("Chart Menu Bar").FindControl(ID:=30003)
'30003编辑、30004视图、30005插入、30006格式、30007工具
ctl.Copy Application.CommandBars(strBarName)
With cbr.Controls.Add(msoControlPopup)
.Caption = "帮助"
With .Controls.Add(msoControlButton)
.Caption = "重置"
.OnAction = "删除菜单栏"
End With
With .Controls.Add(msoControlButton)
.Caption = "关于"
.OnAction = "关于"
End With
End With
End Sub
Sub 删除菜单栏()
On Error Resume Next
Application.CommandBars(strBarName).Delete
On Error GoTo 0
End Sub
Sub 关于()
Dim strMsg As String
strMsg = "这是一个新的菜单栏" & vbCrLf
strMsg = strMsg & "由" & Application.UserName & "创建"
MsgBox strMsg, , "关于"
End Sub
自定义功能区参照:
在Excel2013中,创建功能区选项卡的操作非常简单,用户可通过打开“Excel选项"对话框直接进行功能区选项卡和组的创建。
-End-
猜你喜欢
- 2024-10-08 使用VBA自动化处理Excel数据生成装箱单
- 2024-10-08 补课了!VBA过程的附加技能(vba 过程调用)
- 2024-10-08 VBA三种程序类型介绍(vba程序是什么意思)
- 2024-10-08 Excel VBA 提取word表格信息(vba提取sheet名字)
- 2024-10-08 rust跟Excel vba交互(rust制作表)
- 2024-10-08 VBA|使用窗体控件02:使用显示信息的标签控件
- 2024-10-08 Excel破解:如何快速破解VBA窗口密码
- 2024-10-08 VB/VBA中的函数,用了那么久,其实是这样的
- 2024-10-08 VBA|正确使用过程和自定义函数(vba自定义函数参数说明)
- 2024-10-08 VBA高级应用30例:Ribbon(功能区)的介绍
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)