如何在vba中操作快捷键 & 添加菜单项

问: 用VBA如何使快捷键失效,如使ctr+D(删除)失效?

'按a執行宏TEST
Application.OnKey "a", "TEST"

'恢復按a正常功能
Application.OnKey "a"

'按a不發生任何作業
Sub TEST3()
Application.OnKey "a", ""
End Sub

ctl+C: "^c"
ctl+V: "^v"
Alt+F4: "%{F4}"  
PageUp:"{PgUp}"
PageDown"{:PgDn}"


更多的键代码:

{BACKSPACE} or {BS} Backspace
{BREAK} Break
Caps Lock {CAPSLOCK}
{CLEAR} Clear
Delete 或 Del {DELETE} 或 {DEL}
End {END}
~(波形符) Enter
Enter(数字小键盘) {ENTER}
{ESCAPE} 或 {ESC} Esc
{F1} 到 {F15} F1 到 F15
{HELP} Help
Home {HOME}
{INSERT} Ins
Num Lock {NUMLOCK}
Page Down {PGDN}
{PGUP} Page Up
{RETURN} Return
{SCROLLLOCK} Scroll Lock
Tab {TAB}
向上键 {UP}
{DOWN} 向下键
{RIGHT} 向右键
向左键 {LEFT}


也可指定与 Shift 和/或 Ctrl 和/或 Alt 组合使用的键。要指定与其他键组合使用的键,请使用下表。

要组合的键 在键代码之前添加
Shift +(加号)
Ctrl ^(乘幂)
Alt %(百分号) 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/seawavecau/archive/2006/10/21/1343733.aspx

 

添加菜单项
与添加新菜单一样,在添加菜单项及子菜单时,使用Add方法,且指定合适的控件类型,其代码清单如下:
Sub AddNewMenu()
Dim HelpMenu As CommandBarControl
Dim NewMenu As CommandBarPopup
Dim MenuItem As CommandBarControl
Dim SubMenuItem As CommandBarButton

On Error Resume Next
'如果菜单已存在,则删除该菜单
CommandBars(1).Controls("统计(&S)").Delete

'利用ID属性查找帮助菜单
Set HelpMenu = CommandBars(1).FindControl(ID:=30010)

If HelpMenu Is Nothing Then
      '如果该菜单不存在,则将新菜单添加到末尾
      '设置新菜单为临时的
      Set NewMenu = CommandBars(1).Controls _
      .Add(Type:=msoControlPopup, Temporary:=True)
Else
      '将新菜单添加到帮助菜单之前
      Set NewMenu = CommandBars(1).Controls _
      .Add(Type:=msoControlPopup, Before:=HelpMenu.Index, _
      Temporary:=True)
End If

'添加菜单标题并指定热键
NewMenu.Caption = "统计(&S)"

'添加第一个菜单项
Set MenuItem = NewMenu.Controls.Add _
   (Type:=msoControlButton)
With MenuItem
       .Caption = "输入数据(&D)..."
       .FaceId = 162
       .OnAction = "Macro1"
End With

'添加第二个菜单项
Set MenuItem = NewMenu.Controls.Add _
   (Type:=msoControlButton)
With MenuItem
       .Caption = "汇总数据(&T)..."
      '添加快捷键
       .ShortcutText = "Ctrl+Shift+T"
       .FaceId = 590
       .OnAction = "Macro2"
End With

'添加第三个菜单项
'本菜单有子菜单项,因此其类型为msoControlPopup
Set MenuItem = NewMenu.Controls.Add _
   (Type:=msoControlPopup)
With MenuItem
       .Caption = "数据报表(&R)..."
      '添加分隔线
       .BeginGroup = True
End With

'添加子菜单
'添加第一个子菜单
Set SubMenuItem = MenuItem.Controls.Add _
   (Type:=msoControlButton)
With SubMenuItem
       .Caption = "月汇总(&M)"
       .FaceId = 110
       .OnAction = "Macro3"
End With

'添加第二个子菜单
Set SubMenuItem = MenuItem.Controls.Add _
   (Type:=msoControlButton)
With SubMenuItem
       .Caption = "季度汇总(&Q)"
       .FaceId = 222
       .OnAction = "Macro4"
End With
End Sub


注意,菜单类型的不同,有二个菜单项(类型为msoControlButton)、有一个菜单项带有子菜单(其类型为msoControlPopup)
FaceID属性确定出现在菜单文本旁边的图像,以数字表示,一个数字代表一个内置的图像。
在Caption属性中使用&号表示该菜单项的热键。
在第二个菜单项中,利用ShortcutText属性为该菜单项添加了一个快捷键,用户按此快捷键可以直接运行命令。

或者用以下的方法:

添加菜单
向Excel工作表菜单栏中添加菜单的过程清单如下:
Sub AddNewMenu()
Dim HelpMenu As CommandBarControl
Dim NewMenu As CommandBarPopup

'利用ID属性查找帮助菜单
Set HelpMenu = CommandBars(1).FindControl(ID:=30010)

If HelpMenu Is Nothing Then
      '如果该菜单不存在,则将新菜单添加到末尾
      '设置新菜单为临时的
      Set NewMenu = CommandBars(1).Controls _
      .Add(Type:=msoControlPopup, Temporary:=True)
Else
      '将新菜单添加到帮助菜单之前
      Set NewMenu = CommandBars(1).Controls _
      .Add(Type:=msoControlPopup, Before:=HelpMenu.Index, _
      Temporary:=True)
End If

'添加标题并指定快捷键
NewMenu.Caption = "统计(&S)"
End Sub

运行该过程后,将在工作表菜单的“帮助”菜单左侧添加一个名为“统计”的新菜单。
注:要删除新添加的菜单,使用Delete方法即可,例如代码:CommandBars ( 1 ). Controls ( "统计(&S)" ). Delete

将删除刚创建的“统计”菜单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值