.TooltipText = \:\End With Next
Set ICon = IBar.Controls.Add(Type:=msoControlButton) With ICon
.Caption = \.BeginGroup = True .FaceId = 133
.TooltipText = \下一页\.OnAction = \End With
Set ICom = IBar.Controls.Add(Type:=msoControlComboBox) With ICom
.Caption = \.BeginGroup = True
.TooltipText = \每行图标数\.OnAction = \.Width = 40 .Text = 20 For I = 1 To 10 .AddItem I * 5 Next End With
Set ICon = IBar.Controls.Add(Type:=msoControlButton) With ICon .Caption = \.FaceId = 59
.TooltipText = \给定FaceId值显示\.OnAction = \End With
Set ICon = IBar.Controls.Add(Type:=msoControlButton) With ICon .Caption = \.FaceId = 159
.TooltipText = \显示第N页\.OnAction = \
End With
Set ICon = IBar.Controls.Add(Type:=msoControlButton) With ICon .Caption = \.FaceId = 682
.TooltipText = \列出所有FaceId\.OnAction = \End With
Set ICon = IBar.Controls.Add(Type:=msoControlButton) With ICon
.BeginGroup = True .FaceId = 49
.TooltipText = \关于\.OnAction = \End With Error: End Sub '删除工具栏 Sub BarDel() On Error GoTo Error
CommandBars(\Error: End Sub
因为完整的代码较长,而且其它内容和这一贴无关,如果有兴趣的话,大家可以到本站中下载完整的加载宏文件,内置图标。
十九、 自定义右键菜单
前面说过了自定义菜单与工具栏,如果大家利用好了,就可以很方便地让别人使用你编辑好的功能了。而这一贴要讲的,利用右键的菜单,让调用功能更为方便。
当我们使用右键时,Excel相对应都会有一些功能在右键的菜单中出现,比如右击单元格时有设定单元格的功能,右击行号与列标时,有设定行高与列宽的功能,那么,我们也可以相应在我们需要的时候,将功能将入右键的菜单中,方便调用,比如下面说的自定义宏——合并复制选择单元格的内容,即可以加入到在右击单元格时产生的右键菜单中。
其实这些菜单的使用方法和前面将的菜单与工具栏是类似的,工具栏对应的是CommandBars对象,菜单对应的是CommandBarControl对象,而CommandBarControl 对象中又分有三种——ComandBarButton(按钮控件)、CommandBarComboBox(组合框控件)以及这贴说的CommandBarPopup(弹出式控件),下面给出一段程序,在表格中列出全部的弹出式控件的名称及项目等内容。
Sub ListPopups()
Dim ctl As CommandBarControl Dim cb As CommandBar
Dim intRow As Integer 'Tracks row in worksheet '下面一行是检查当前工作表是否没有内容 If Not IsEmptyWorksheet(ActiveSheet) Then Exit Sub On Error Resume Next
Application.ScreenUpdating = False Cells(1, 1).Value = \Cells(1, 2).Value = \Cells(1, 3).Value = \Cells(1, 4).Value = \
Range(\intRow = 2
For Each cb In CommandBars
Application.StatusBar = \正在处理控制... \'Only list command bar if type is Popup If cb.Type = msoBarTypePopup Then Cells(intRow, 1).Value = cb.Name intRow = intRow + 1
'List controls on command bar For Each ctl In cb.Controls Cells(intRow, 2).Value = ctl.Caption ctl.CopyFace
If Err.Number = 0 Then
ActiveSheet.Paste Cells(intRow, 3) Cells(intRow, 3).Value = ctl.FaceId End If
Cells(intRow, 4).Value = ctl.Id Err.Clear
intRow = intRow + 1
Next ctl End If Next cb
Range(\Application.StatusBar = False End Sub
'检查当前工作表是否有内容的函数
Function IsEmptyWorksheet(sht As Object) As Boolean If TypeName(sht) = \
If WorksheetFunction.CountA(sht.UsedRange) = 0 Then IsEmptyWorksheet = True Exit Function End If End If
MsgBox \请生成一个空的工作表!\\End Function
从上面的程序可以让我们了解各种情况下的弹出菜单,只要通过名称及其相应的功能,我们就可以和现实中的操作对比,来获得需要的弹出菜单名称,比如单元格——Cell,行——Row等。之后我们就可以将自定义的项目加入对应的菜单中了。以下是我现实合并复复增减菜单项目的代码,其余代码略过:
Sub Menu_Del() Dim N
N = Application.CommandBars(\ For I = 1 To N
'当发现右键菜单中有\合并复制(&A)\项时将其删除
If Application.CommandBars(\合并复制(&A)\Application.CommandBars(\
'下面这句是重置菜单,但个人认为还是用上面的方法比较好 'Application.CommandBars(\End If Next End Sub Sub Menu_Add()
Dim N, I, Cmb As CommandBarControl
N = Application.CommandBars(\

