2013-12-12 3 views
1

Я использую Excel 2007 на компьютере под управлением Windows XP. На моем листе у меня много «фигур» («Прямоугольники»).Excel VBA: щелкните правой кнопкой мыши по фигуре и добавьте новый пункт меню

Я назначил макросы для фигур, чтобы они выполняли задачу, когда кто-то нажимает на них.

Что я хотел бы сделать, это следующее, но я прочитал сообщения, в которых говорится, что это невозможно.

  • Когда кто-то щелкнет правой кнопкой мыши по фигуре, можно ли добавить новый пункт меню?

Это легко сделать, когда кто-то щелкнет правой кнопкой мыши по ячейке, но формы кажутся разными.

Я знаю, что на рабочем листе есть событие «Worksheet_BeforeRightClick», но я не могу заставить его работать, когда я нажимаю правой кнопкой мыши на фигуре.

Ниже приведено начало моего кода, но это не влияет на мои меню.

Большое спасибо заранее

With Application.CommandBars("Shapes") 
    With .Controls.Add 
     .Caption = "My New Menu Item" 
     .BeginGroup = True 
     .OnAction = "MyNewMacro" 
    End With 
End With 
+0

см [** 'this' **] (http://stackoverflow.com/questions/19157277/pause-macro-and-let-user-select -цвет), возможно, вы можете поиграть с кодом и заставить его работать :) –

+0

Возможный дубликат [добавить элемент в контекстное меню в таблице Excel] (http://stackoverflow.com/questions/1040630/add-item- to-right-click-menu-in-excel-chart) –

+0

вы можете прикрепить этот вид кода к правым щелчкам по фигурам как «Worksheet_BeforeRightClick (ByVal Target As Shape, Cancel As Boolean)» и проверить чек против массива диапазоны, такие как 'If IsInArray (Target, YourRangeArray) Then ...'. ** Все еще ** это поднимает проблемы, так как это вызовет ошибки, когда вы щелкните правой кнопкой мыши на чем-либо еще (например, на ячейке), если не сопутствует какой-то захват ошибок, например 'On Error Resume Next' – Takedasama

ответ

0

Как я понимаю, Вы хотите добавить макрос, который, когда бежал, будет создать другую форму (?). Если это так, вы можете запустить что-то вроде:

Sub AddShape() 
Sheets("YourSheetName").Shapes.AddShape(msoShapeRectangle, 35.25, 30.75, 121.5, 51.75).Select 
'Add some additional info like name and style, or even attach another macro to it:  
Selection.ShapeRange.Name = "Test_Name" 
Selection.ShapeRange.ShapeStyle = msoShapeStylePreset36 
Selection.OnAction = "Testmacro" 
End Sub 

Sub TestMacro 
MsgBox "Hello"  
EndSub 
+0

не совсем. Я хочу щелкнуть правой кнопкой мыши по существующей фигуре и добавить новый элемент в меню. Я не хочу создавать новую форму. – Eddie

+0

@ Eddie Я googled и проверял много кодов, но я не могу заставить их работать на фигурах (на Excel2010). Я бы сказал, что в этот момент невозможно добавить их в фигуры. Таким образом, даже если 'Application.CommandBars (« Shapes »)' выглядит как встроенная функция VBA, она ничего не запускает. Обходным путем было бы создать кнопки «формы» подменю. С первым вариантом, являющимся исходным макросом, и другими параметрами CommandBars (?) – Takedasama

 Смежные вопросы

  • Нет связанных вопросов^_^