网站首页 > 技术文章 正文
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 Sub2 插入自定义工具栏命令
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 Sub3 创建新的菜单栏
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(功能区)的介绍
- 11-22中国联想电脑官网(联想官方网站)
- 11-22浏览器官方下载安装(chrome浏览器官方下载)
- 11-22正版xp系统购买(winxp正版多少钱)
- 11-22win7怎么安装双系统(win7如何安装双系统)
- 11-22win10企业版转专业版(win10企业版转专业版步骤图解)
- 11-22一键还原重装系统(一键还原重装系统怎么操作)
- 11-22在线系统重装win10系统(在线win10重装系统教程)
- 11-22360文件恢复手机版(360文件恢复在哪儿)
- 最近发表
- 标签列表
-
- 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 (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
