Excel精英培训网

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

[已解决]请教:自定义快捷菜单中的combobox无法显示为什么

[复制链接]
发表于 2016-9-23 10:30 | 显示全部楼层 |阅读模式

office2007版本  照样子学着写了添加自定义快捷菜单的代码,正常的msocontrolbutton都能显示,就是添加的combobox无法显示,检查了半天代码也不知道哪里错了,烦请大神指教,谢谢!
以下为在row上面添加的快捷菜单,前两个都能显示,就是第三个“复制工作表”的combobox无法显示出来

QQ图片20160923002418.jpg

  1. Sub tjlpp()
  2. On Error Resume Next
  3.     Application.CommandBars("row").Controls("ÎҵIJ˵¥").Delete
  4.     Dim pp, pp1, pp2, i
  5.     Set pp = Application.CommandBars("row").Controls.Add(Type:=msoControlPopup, before:=1)
  6.     With pp
  7.         .Caption = "ÎҵIJ˵¥"
  8.         .BeginGroup = True
  9.         .Visible = True
  10.         .Enabled = True
  11.     End With

  12.     Set pp1 = pp.Controls.Add(before:=1)
  13.     With pp1
  14.         .Caption = "Òƶ¯¹¤×÷±í"
  15.         .FaceId = 12
  16.         .Style = msoButtonIconAndCaption
  17. '        .OnAction = "ÄãºÃ"
  18.     End With
  19.     Set pp1 = pp.Controls.Add(before:=2)
  20.     With pp1
  21.         .Caption = "¼ôÇй¤×÷±í"
  22.         .FaceId = 12
  23.         .Style = msoButtonIconAndCaption
  24. '        .OnAction = "ÄãºÃ"
  25.     End With
  26.     Set pp2 = pp.Controls.Add(Type:=msoControlComboBox, before:=3)

  27.     With pp2
  28.          .Caption = "¸´Öƹ¤×÷±í"
  29.          .BeginGroup = True 'Ìí¼Ó·Ö×éÏß
  30.     '     .OnAction = "Ñ¡È¡¹¤×÷±í" 'Ö¸¶¨ÒªÔËÐеĺê
  31.          .Width = 100
  32.          .DropDownWidth = 70
  33.          .Enabled = True
  34.          .Visible = True
  35.          For i = 1 To Sheets.Count
  36.             .AddItem ThisWorkbook.Sheets(i).Name
  37.          Next
  38.     End With
  39. End Sub

复制代码



最佳答案
2016-9-23 16:44
Sub tjlpp2()
'    On Error Resume Next
'    Application.CommandBars("row").Controls("我的菜单").Delete
'    On Error GoTo 0

    Dim pp, pp1, pp2, i
    Set pp = Application.CommandBars("row").Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True)
    With pp
        .Caption = "我的菜单"
        .BeginGroup = True
        .Visible = True
        .Enabled = True
    End With

    Set pp1 = pp.Controls.Add(before:=1)
    With pp1
        .Caption = "移动工作表"
        .FaceId = 12
        .Style = msoButtonIconAndCaption
        '        .OnAction = "你好"
    End With

    Set pp1 = pp.Controls.Add(before:=2)
    With pp1
        .Caption = "剪切工作表"
        .FaceId = 12
        .Style = msoButtonIconAndCaption
        '        .OnAction = "你好"
    End With
    Set pp1 = pp.Controls.Add(Type:=msoControlPopup, before:=3)
    With pp1
        .Caption = "复制工作表"
        '        .BeginGroup = True    '添加分组线
        '     .OnAction = "选取工作表" '指定要运行的宏
        '        .Width = 100
        '        .DropDownWidth = 70
        '        .Enabled = True
        '        .Visible = True
        '        For i = 1 To Sheets.Count
        '            .AddItem Sheets(i).Name
        '        Next

        For i = 1 To Sheets.Count
            Set pp2 = pp1.Controls.Add(before:=1)
            With pp2
                .Caption = Sheets(i).Name
            End With
        Next i

    End With
End Sub



这样凑合,行吗?

命令栏.rar

23.92 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-9-23 12:54 | 显示全部楼层
给你回一贴, office 2007   不好用,   果断放弃用   office 2010
回复

使用道具 举报

 楼主| 发表于 2016-9-23 13:10 | 显示全部楼层
我准备直接2016,反正就是要接受新事物,干脆一步到位
回复

使用道具 举报

发表于 2016-9-23 16:43 | 显示全部楼层
QQ截图20160923163639.jpg





我没16,试了下,只03可以(看到组合框)。

http://club.excelhome.net/thread-1133619-1-1.html
看了这个,加了.clear,还是看不到。(新建控件的条目数,来就为空嘛)

我猜,是不是微软觉得右键菜单用组合框,好像并不好看,价值不大,07后就不显示了(但没禁用,并加以说明)

回复

使用道具 举报

发表于 2016-9-23 16:44 | 显示全部楼层    本楼为最佳答案   
Sub tjlpp2()
'    On Error Resume Next
'    Application.CommandBars("row").Controls("我的菜单").Delete
'    On Error GoTo 0

    Dim pp, pp1, pp2, i
    Set pp = Application.CommandBars("row").Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True)
    With pp
        .Caption = "我的菜单"
        .BeginGroup = True
        .Visible = True
        .Enabled = True
    End With

    Set pp1 = pp.Controls.Add(before:=1)
    With pp1
        .Caption = "移动工作表"
        .FaceId = 12
        .Style = msoButtonIconAndCaption
        '        .OnAction = "你好"
    End With

    Set pp1 = pp.Controls.Add(before:=2)
    With pp1
        .Caption = "剪切工作表"
        .FaceId = 12
        .Style = msoButtonIconAndCaption
        '        .OnAction = "你好"
    End With
    Set pp1 = pp.Controls.Add(Type:=msoControlPopup, before:=3)
    With pp1
        .Caption = "复制工作表"
        '        .BeginGroup = True    '添加分组线
        '     .OnAction = "选取工作表" '指定要运行的宏
        '        .Width = 100
        '        .DropDownWidth = 70
        '        .Enabled = True
        '        .Visible = True
        '        For i = 1 To Sheets.Count
        '            .AddItem Sheets(i).Name
        '        Next

        For i = 1 To Sheets.Count
            Set pp2 = pp1.Controls.Add(before:=1)
            With pp2
                .Caption = Sheets(i).Name
            End With
        Next i

    End With
End Sub



这样凑合,行吗?

回复

使用道具 举报

 楼主| 发表于 2016-9-23 18:29 | 显示全部楼层
爱疯 发表于 2016-9-23 16:43
我没16,试了下,只03可以(看到组合框)。

http://club.excelhome.net/thread-1133619-1-1 ...

我刚把兰版写的那个也试了试在我的2016,确实没显示,你解释的有道理,因为我也没弄清楚有popup了为什么还要用combobox,我倒不是一定要让它显示出来,就是我明明觉得自己没写错而不能正常显示,找不到原因我百爪挠心啊![em01]谢谢亲帮我解决了疑难!
回复

使用道具 举报

发表于 2016-9-23 19:26 | 显示全部楼层
希望能找到官方的帮助,那样就死心塌地了。。。
回复

使用道具 举报

 楼主| 发表于 2016-9-23 20:29 | 显示全部楼层
爱疯 发表于 2016-9-23 19:26
希望能找到官方的帮助,那样就死心塌地了。。。

恩就是,你就是官方![em20]
回复

使用道具 举报

发表于 2016-9-23 21:08 | 显示全部楼层
today0427 发表于 2016-9-23 20:29
恩就是,你就是官方!

和大家一样,我也是来学习的 ,

所以必须声明我是官方。。。。打酱油的!
回复

使用道具 举报

发表于 2016-9-24 13:45 | 显示全部楼层
today0427 发表于 2016-9-23 13:10
我准备直接2016,反正就是要接受新事物,干脆一步到位

VBA把单元格改数组

http://www.excelpx.com/thread-424668-1-1.html




回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 07:19 , Processed in 0.290514 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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