2016-07-14 249 views
5

長時間查看器,第一次張貼海報。 我有一個窗口右鍵單擊功能,工作正常。 我想添加一個子菜單到主要的右鍵菜單來分離一些功能/命令。我需要/想要插入「選擇案例」部分,但是,它只顯示頂部菜單。 不知道該從哪裏出發。任何幫助將是真棒Excel VBA - 將子菜單添加到自定義右鍵菜單

謝謝:)

p.S.如果需要,我會很樂意解釋。

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 

需要插入下面的子菜單(S)到頂部的菜單 但什麼也不顯示:不工作

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 

「額外頂部menue(S)以下位置:這項工作很好

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 

回答

2

您設置Copy_Button等於msoControlButton。如果你想要一個按鈕,這是正確的。你想要一個菜單​​,所以你應該把它設置爲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」部分(前3行)與下面;它添加了一個額外的按鈕,然後是所需的菜單。

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

感謝@Tim解釋說,這很好。儘管我做了一個編輯,但是非常不錯。 –

相關問題