2016-07-14 25 views
5

Uzun zamandır görüntüleyen, ilk kez poster. İyi çalışabilen Right-Click işlevlerine sahip bir formum var. Bazı işlevleri/komutları ayırmak için ana sağ tıklama menüsüne alt menü eklemeyi deniyorum. Bununla birlikte 'Select Case' kısmının bulunduğu bölümü eklemek/eklemek istiyorum, ancak sadece en üstteki menüyü gösteriyor. Buradan nereye gideceğinizden emin değilsiniz. Herhangi bir yardım müthişExcel VBA - Özel sağ tıklama menüsüne alt menü ekle

Teşekkür :)

Not; olacaktı Gerekirse daha fazla açıklamaktan memnuniyet duyarım.

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

'Ana PopBar üzerinde top_menu ekleyin: İnce Bu işi

üst menü içine aşağıdaki alt menü (ler) ini gerekiyor

Set top_menu = PopBar.Controls.Add(Type:=msoControlButton) 
With top_menu 
    '.FaceId = 
    .Caption = "&Some Commands" 
End With 
Ama hiçbir şey gösterir: Çalışmaz

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 

'Ekstra üst menü (ler) aşağıda: Bu çalışma ince

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 

cevap

2

Copy_Button değerini msoControlButton'a eşit olarak ayarlarsınız. Eğer bir buton istiyorsan, bu doğru. Yine de bir menü istersiniz, bu yüzden onu msoControlPopup'a ayarlamanız gerekir. Şunun gibi bir şey deneyin:

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” bölümünü (ilk 3 satır) aşağıdaki ile kaldırdım; Fazladan bir düğme ve ardından istenen menüyü ekliyordu.

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

Teşekkürler @Tim bunu açıklar, harika çalışıyor. Yine de bir değişiklik yaptım, ama harika olmayan bir şekilde çalışıyor. –