2016-07-14 63 views
5

Visualizzatore a lungo tempo, poster prima volta. Ho un modulo con le funzioni del tasto destro che funzionano bene. Sto cercando di aggiungere un sottomenu al menu principale del tasto destro per separare alcune funzioni/comando. Ho bisogno/voglio inserire la sezione in cui 'Select Case' è, tuttavia, è solo mostrando il menu principale. Non so da dove andare. Qualsiasi aiuto sarebbe impressionanteExcel VBA - Aggiungi menu secondario al menu di scelta rapida personalizzato

Grazie :)

P.S. Sarei felice di spiegare ulteriormente se necessario.

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

'Aggiungi top_menu on Main PopBar: Questo lavoro bene

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

necessità di inserire il menu sottostante sub (s) nel menu in alto Ma nulla si presenta: NON FUNZIONA

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 

'menù Extra top (s) di seguito qui: Questo lavoro bene

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 

risposta

2

Imposta Copy_Button uguale a msoControlButton. Se si desidera un pulsante, questo è corretto. Volete un menu, quindi dovreste impostarlo su un msoControlPopup. Prova qualcosa del genere:

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 

Ho rimosso la sezione "Top_Menu" (prime 3 righe) con il sotto; stava aggiungendo un pulsante extra e poi il menu desiderato.

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

Grazie a @Tim per averlo spiegato, funziona benissimo. Ho fatto una modifica, ma funziona alla grande senza nulla. –