ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1636|回复: 9

[求助] 含有条件的右键菜单问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-17 00:28 | 显示全部楼层 |阅读模式
右键菜单只能显示“处室”一项,其他部门项显示不出来,是条件设置的不对吧?如何设置这些条件才合适呢?
高手请帮忙呀,看看怎么修改呢?网上似乎搜索不到这样复杂的例子

[ 本帖最后由 lszxsxy 于 2011-3-17 10:11 编辑 ]

CustomMenu.rar

11.79 KB, 下载次数: 31

TA的精华主题

TA的得分主题

发表于 2011-3-17 10:26 | 显示全部楼层
不好意思,这个问题没研究过,不懂啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-17 10:32 | 显示全部楼层

回复 2楼 lenghonghai 的帖子

没关系 我也是想研究下 为了输入人名方便 爱折腾 但是折腾不好 呵呵

TA的精华主题

TA的得分主题

发表于 2011-3-17 11:31 | 显示全部楼层
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim oPopup As CommandBar
    Dim oSubMenu As CommandBarPopup
    Dim oMenuItem As CommandBarControl
    Set d = CreateObject("scripting.dictionary")
    Cancel = True
    On Error Resume Next
    CommandBars("TeacherMenu").Delete
    On Error GoTo 0
    Set oPopup = CommandBars.Add("TeacherMenu", msoBarPopup)
    Set oSubMenu = oPopup.Controls.Add(msoControlPopup)
    oSubMenu.Caption = "教师姓名"
    For i = 1 To 11
    Set oMenuItem = oSubMenu.Controls.Add(msoControlPopup)
    oMenuItem.Caption = Sheets(2).Cells(1, i)
    d.RemoveAll
    For j = 2 To Sheets(2).Cells(65536, Sheets(2).Rows(1).Find(Sheets(2).Cells(1, i), , , xlWhole).Column).End(xlUp).Row
    If Not d.exists(Sheets(2).Cells(j, i).Value) And Sheets(2).Cells(j, i).Value <> "" Then
    d(Sheets(2).Cells(j, i).Value) = Sheets(2).Cells(j, i).Value
    With Application.CommandBars("TeacherMenu").Controls(1).Controls(i).Controls.Add(Type:=msoControlButton)
    .Caption = Sheets(2).Cells(j, i).Value
    .OnAction = "rtclick"
    End With
    End If
    Next
    Next
    oPopup.ShowPopup
    oPopup.Delete
End Sub

TA的精华主题

TA的得分主题

发表于 2011-3-17 12:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如果多几张表:SHEET1,SHEET4,SHEET5.........就要出现错误
宏"rtclick"一定要放在模块中吗?
Sub rtclick()
    ActiveCell = Application.CommandBars.ActionControl.Caption
End Sub
请帮助,谢谢!

TA的精华主题

TA的得分主题

发表于 2011-3-17 15:19 | 显示全部楼层
留个脚印学习,以后能有用

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-17 21:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 4楼 jxb8088 的帖子

谢谢大师,代码很强大 很专业!
再问一下:要是想把第一级菜单“教师姓名”去掉,直接出现第二级各个学科菜单,怎么修改呀 我试了试 还是弄不好。麻烦大师了

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-17 21:43 | 显示全部楼层

回复 5楼 klkl 的帖子

我也曾经那样试过 是不正常 不太清楚原因啦 呵呵

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-3-17 21:51 | 显示全部楼层

回复 4楼 jxb8088 的帖子

再次谢过大师 我弄好了

TA的精华主题

TA的得分主题

发表于 2011-3-17 23:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 4楼 jxb8088 的帖子

如果多几张表:SHEET1,SHEET4,SHEET5.........就要出现错误
宏"rtclick"一定要放在模块中吗?
Sub rtclick()
    ActiveCell = Application.CommandBars.ActionControl.Caption
End Sub
请帮助,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 06:20 , Processed in 0.034772 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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