Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4263|回复: 6

[已解决]vba添加右键菜单报错

[复制链接]
发表于 2011-10-21 17:24 | 显示全部楼层 |阅读模式
本帖最后由 mqr66 于 2011-10-21 17:27 编辑

我用vba添加了一个右键菜单合并单元格,右击合并单元格也可正常使用,想用vba再添加一个菜单“单元格赋值,代码如下:
Sub fsddl()
With Application.CommandBars("cell")
.Reset
With .conrtols.Add(Type:=msoControlButton)
.Caption = "单元格赋值"
.BeginGroup = True
.OnAction = "单元格赋值"

End Sub
Sub 单元格赋值()
Range("b1:c5") = 443
End Sub
但我执行如上的代码以后,我的单元格赋值的菜单可正常使用,但我原来增加的合并单元格的右键菜单不见了,是不是用vba右键添加菜单的时候还有一个参数,用来指定右键菜单的位置,我在上表中没有输入。或者有什么办法我可以用vba增加多个右键菜单而不致于后一个添加的菜单覆盖前一个菜单。请高手指教 ,谢谢了。
最佳答案
2011-10-21 17:41
  1. Sub 右键命令2()   '二级右键菜单
  2.     Application.CommandBars("cell").Reset
  3.     Set MyMenu = Application.CommandBars("cell").Controls.Add(Type:=msoControlPopup)
  4.     With MyMenu
  5.         .BeginGroup = True           '分界线
  6.         .Caption = "小工具"
  7.         Set 命令1 = .Controls.Add(Type:=msoControlButton)
  8.         Set 命令2 = .Controls.Add(Type:=msoControlButton)
  9.     End With

  10.     With 命令1
  11.         .Caption = "第一"
  12.         .OnAction = "宏1"
  13.         .FaceId = 1035
  14.     End With

  15.     With 命令2
  16.         .Caption = "第二"
  17.         .OnAction = "宏2"
  18.         .FaceId = 1036
  19.     End With
  20. End Sub
复制代码

运行前.rar

64.89 KB, 下载次数: 293

发表于 2011-10-21 17:34 | 显示全部楼层
原因是你用了:
.Reset
复原了右键菜单
回复

使用道具 举报

发表于 2011-10-21 17:35 | 显示全部楼层
本帖最后由 zjdh 于 2011-10-21 17:35 编辑

你这语句错了,执行不了的:
With .conrtols.Add(Type:=msoControlButton)
应该是
With .Controls.Add(Type:=msoControlButton)
回复

使用道具 举报

发表于 2011-10-21 17:38 | 显示全部楼层
本帖最后由 zjdh 于 2011-10-21 17:42 编辑
  1. Sub 右键命令()
  2.     With Application.CommandBars("cell")
  3.         .Reset
  4.         With .Controls.Add(Type:=msoControlButton)
  5.             .Caption = "单元格赋值"
  6.             .BeginGroup = True
  7.             .OnAction = "单元格赋值"
  8.         End With
  9.         With .Controls.Add(Type:=msoControlButton)
  10.             .Caption = "单元格合并"
  11.             .OnAction = "单元格合并"
  12.         End With
  13.         '...............
  14.     End With
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2011-10-21 17:41 | 显示全部楼层    本楼为最佳答案   
  1. Sub 右键命令2()   '二级右键菜单
  2.     Application.CommandBars("cell").Reset
  3.     Set MyMenu = Application.CommandBars("cell").Controls.Add(Type:=msoControlPopup)
  4.     With MyMenu
  5.         .BeginGroup = True           '分界线
  6.         .Caption = "小工具"
  7.         Set 命令1 = .Controls.Add(Type:=msoControlButton)
  8.         Set 命令2 = .Controls.Add(Type:=msoControlButton)
  9.     End With

  10.     With 命令1
  11.         .Caption = "第一"
  12.         .OnAction = "宏1"
  13.         .FaceId = 1035
  14.     End With

  15.     With 命令2
  16.         .Caption = "第二"
  17.         .OnAction = "宏2"
  18.         .FaceId = 1036
  19.     End With
  20. End Sub
复制代码

点评

学习了.  发表于 2011-10-21 17:48
回复

使用道具 举报

 楼主| 发表于 2011-10-21 18:00 | 显示全部楼层
回复 zjdh 的帖子

谢谢指点,学习了
回复

使用道具 举报

发表于 2011-10-21 18:31 | 显示全部楼层
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 10:38 , Processed in 0.484598 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表