在设置“自定义功能区”时,看到了一个“加载项”选项卡,但是勾选它之后,并没有在功能区中显示,如图所示:
由于“加载项”选项卡是专门为了兼容excel 2003版本的自定义菜单命令而设置的,单纯的勾选它并不会显示,只有添加了自定义菜单命令后才有可能会显示。
从图中可以看出,“加载项”选项下有“菜单命令”、“工具栏命令”、“自定义工具栏”三个组。
一、其中“加载项”选项下的“菜单命令”组对应的是名为“Worksheet Menu Bar”的菜单栏中添加的自定义菜单命令,如图所示:
Sub QQ1722187970() Dim oCB As CommandBar Dim oCBC As CommandBarControl Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") With oCB .Reset Set oCBC = .Controls.Add With oCBC .FaceId = 17 End With End With End Sub
当运行上述代码后,将自动在功能区中添加显示“加载项”选项卡,并且在“菜单命令”组中显示添加的自定义的菜单命令。
二、“加载项”选项下的“工具栏命令”组对应的是名为“Standard”的菜单栏中添加的自定义菜单命令,如图所示:
Sub QQ1722187970() Dim oCB As CommandBar Dim oCBC As CommandBarControl '添加加载项选项卡下的菜单命令组中的命令 Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") With oCB .Reset Set oCBC = .Controls.Add With oCBC .FaceId = 17 End With End With '添加加载项选项卡下的工具栏命令组中的命令 Set oCB = Excel.Application.CommandBars("Standard") With oCB .Reset Set oCBC = .Controls.Add With oCBC .FaceId = 18 End With End With End Sub
当运行上述代码后,将自动在功能区中添加显示“加载项”选项卡,并且在“菜单命令”组和“工具栏命令组”中显示添加的自定义的菜单命令。
三、“加载项”选项下的“自定义工具栏”组需要通过CommandBars.Add方法添加,如图所示:
Sub QQ1722187970() Dim oCB As CommandBar Dim oCBC As CommandBarControl For Each oCB In Excel.Application.CommandBars If oCB.BuiltIn = False Then oCB.Delete End If Next '添加加载项选项卡下的菜单命令组中的命令 Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") With oCB .Reset Set oCBC = .Controls.Add With oCBC .FaceId = 17 End With End With '添加加载项选项卡下的工具栏命令组中的命令 Set oCB = Excel.Application.CommandBars("Standard") With oCB .Reset Set oCBC = .Controls.Add With oCBC .FaceId = 18 End With End With '添加加载项选项卡下的自定义工具栏组中的命令 Set oCB = Excel.Application.CommandBars.Add With oCB '一定要设置为可见,否则无法显示 .Visible = True Set oCBC = .Controls.Add With oCBC .FaceId = 19 End With End With End Sub
当运行上述代码后,将自动在功能区中添加显示“加载项”选项卡,并且在“菜单命令”组、“工具栏命令组”、“自定义工具栏”中显示添加的自定义的菜单命令。
如果想要清除添加的自定义菜单命令,只需要运行以下代码,“加载项”选项卡将自动消失,如图所示:
Sub QQ1722187970() Dim oCB As CommandBar Dim oCBC As CommandBarControl '删除自定义工具栏 For Each oCB In Excel.Application.CommandBars If oCB.BuiltIn = False Then oCB.Delete End If Next Set oCB = Excel.Application.CommandBars("Worksheet Menu Bar") With oCB .Reset End With Set oCB = Excel.Application.CommandBars("Standard") With oCB .Reset End With End Sub
发表评论