2009-06-24 8 views

Répondre

2

Vous souhaitez utiliser la collection CommandBars, qui est utilisée pour les menus contextuels en plus des barres d'outils. Il y a au moins trois menus contextuels - cellule (clic droit sur n'importe quelle cellule), ligne et colonne (clic droit sur les en-têtes A, B, C ou 1, 2, 3). Le code très basique pour ajouter un nouvel élément au menu contextuel de ligne est ci-dessous.

Voir aussi MSDN documentation for CommandBars, et il y a un old Office 2000 list of commandbar elements.

Sub AddToContextMenu() 
    Dim element As CommandBarButton 
    Set element = CommandBars("row").Controls.Add 
    element.Caption = "Menu Item Name" 
    element.OnAction = "VBAToRunOnRow" 
End Sub 
+0

Comme indiqué, cela ne fonctionne pas pour CommandBars ("Formes") –

0

Je sais que vous ne demandez pas une solution C#, mais je pensais que ce serait utile d'afficher depuis que je ne faisais que travailler hors de la réponse de Alistair:

public void AddContextMenuItem(Microsoft.Office.Interop.Excel.Application application, string label) 
{ 
    var button = (CommandBarButton)application.CommandBars["cell"].Controls.Add(); 
    button.Caption = label; 
    button.Click += button_Click; 
} 

void button_Click(CommandBarButton Ctrl, ref bool CancelDefault) 
{ 
    //Button click 
} 
+0

Comme indiqué, cela ne fonctionne pas pour CommandBars ("Formes") –

5

C'est assez tard , mais je pensais que c'était important pour quelqu'un d'autre de le faire.

Dans Excel 2007 et 2010, vous ne pouvez pas modifier les menus contextuels des graphiques et des formes. Il n'y a pas d'erreurs, mais les modifications ne sont tout simplement pas appliquées. Microsoft le sait, au moins les gars intelligents dans le groupe de produits, mais je crois qu'il n'y a rien de prévu pour ces versions pour résoudre ce problème.

Questions connexes