Excel VBA – 将子菜单添加到自定义右键单击菜单

长时间的观众,第一次的海报。 我有一个正确的右键单击function的窗体。 我试图添加一个子菜单到主右键菜单来分离一些function/命令。 我需要/想要插入“select案例”部分,但是,它只显示顶部菜单。 不知道从哪里去。 任何帮助都是极好的

谢谢 :)

PS我会很乐意进一步解释,如果需要的话。

Sub fzCopyPaste(iItems As Integer) On Error Resume Next CommandBars("Custom").Delete Set PopBar = CommandBars.Add(Name:="Custom", Position:=msoBarPopup, MenuBar:=False, Temporary:=True) 

'在主Popbar上添加top_menu:这个很好

 Set top_menu = PopBar.Controls.Add(Type:=msoControlButton) With top_menu '.FaceId = .Caption = "&Some Commands" End With 

需要将下面的子菜单插入顶部菜单但没有显示:不起作用

 Select Case iItems Case 1 ' Copy and Paste Set copy_button = top_menu.Controls.Add(Type:=msoControlButton) With copy_button .FaceId = 19 .Caption = "&Copy" .Tag = "tCopy" .OnAction = "fzCopyOne(true)" End With Set paste_button = top_menu.Controls.Add(Type:=msoControlButton) With paste_button .FaceId = 22 .Tag = "tPaste" .Caption = "&Paste" .OnAction = "fzCopyOne(true)" End With Case 2 ' Paste Only Set paste_button = top_menu.Controls.Add(Type:=msoControlButton) With paste_button .FaceId = 22 .Tag = "tPaste" .Caption = "&Paste" .OnAction = "fzCopyOne(true)" End With End Select 

'在这里下面的额外菜单:这工作很好

  Set paste_button = PopBar.Controls.Add(Type:=msoControlButton) With paste_button .FaceId = 22 .Tag = "tPaste" .Caption = "Main POP BAR 2" .OnAction = "fzCopyOne(true)" End With PopBar.ShowPopup CommandBars("Custom").Delete End Sub 

你设置Copy_Button等于一个msoControlButton 。 如果你想要一个button,这是正确的。 你想要一个菜单​​,所以你应该把它设置为一个msoControlPopup 。 尝试这样的事情:

 Set Top_Menu = PopBar.Controls.Add(Type:=msoControlPopup) With Top_Menu .Caption = "&Some Commands" Set MySubMenu = .Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True) Select Case iItems Case 1 With MySubMenu .Caption = "Submenu Commands" With .Controls.Add(Type:=msoControlButton, before:=1, temporary:=True) .FaceId = 19 .Caption = "&Copy" .Tag = "tCopy" .OnAction = "fzCopyOne(true)" End With With .Controls.Add(Type:=msoControlButton, before:=2, temporary:=True) .FaceId = 22 .Tag = "tPaste" .Caption = "&Paste" .OnAction = "fzCopyOne(true)" End With End With Case 2 'etc End Select End With 

我用下面的方法删除了“Top_Menu”部分(前三行) 它是添加一个额外的button,然后所需的菜单。

 Set MySubMenu = PopBar.Controls.Add(Type:=msoControlPopup, before:=1, temporary:=True) With MySubMenu .Caption = "&Some Commands"