Страницы: 1
RSS
Своё выпадающее меню при нажатии ПКМ по фигуре
 

Здравствуйте. Можно ли сделать так: нажимаешь ПКМ на одну фигуру, появляется одно меню, нажимаешь на другую, другое меню?

Получается проделать такой фокус с разными диапазонами, а с фигурами - нет. Не знаю как определить имя активной фигуры, и еще, если не сбрасывать старое меню (Application.CommandBars("Cell").Reset), то оно не появляется при нажатии ПКМ по фигуре.

 
Доброе время суток
Цитата
rud.666 написал:
то оно не появляется при нажатии ПКМ по фигуре.
А почему контекстное меню Cell для диапазона ячеек должно точно также использоваться для фигур? Копайте в сторону Customizing Context Menus in Win Microsoft Excel 2010 and higher and also Mac Excel 2016 and higher. Для фигур контекстное меню имеет идентификатор ContextMenuShape.
Цитата
rud.666 написал:
Не знаю как определить имя активной фигуры
В объектной модели Excel нет такого понятия - активная фигура. Далее, если вы выполняете ПКМ на фигуре, то она выделяется (если только ранее не было выделено несколько фигур), следовательно можно получить у Selection ShapeRange. Через него выяснить по Count сколько фигур на самом деле выделено, и если одна, то запросить у Selection имя Name.
 
С определением "активной" фигуры всё получилось, а с созданием контекстного меню для фигур - нет. Если заменить идентификатор с "Cell" на "ContextMenuShape", то Excel ругается, - говорит "недопустимый вызов процедуры или аргумент (ошибка 5)".
Код
Sub контекстное_меню_для_фигур()
    With Application.CommandBars("ContextMenuShape").Controls.Add(Type:=msoControlButton, before:=1, temporary:=True)
        .Caption = "Моя кнопка"
        .OnAction = "мой_макрос"
    End With
End Sub
Что я делаю не так?  
Изменено: rud.666 - 24.10.2020 16:35:57
 
У фигур вроде 2 разных контекстных меню есть (но не уверен, последний раз лет 5 назад  этим сталкивался, не помню)
Вот здесь есть макрос, который позволяет увидеть, какое контекстное меню отображается:
https://excelvba.ru/code/PopupMenu
 
Цитата
rud.666 написал:
Application.CommandBars("ContextMenuShape")
Цитата
rud.666 написал:
Что я делаю не так?
Я правильно понимаю, что статью по ссылке вы не читали? В коллекции CommandBars нет ContextMenuShape, только Shapes.
 
Читал, с Shapes тоже не получается
 
Цитата
rud.666 написал:
с Shapes тоже не получается
Да, ну? Нажмите на кнопку.
 

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

 
rud.666, я так понимаю развёрнутого ответа на "тоже не получается" не будет. Советую тогда подождать следующего консультанта :)  
Успехов.
Изменено: Андрей VG - 24.10.2020 18:02:53
 
Андрей VG, большое Вам спасибо, теперь все работает, как я и хотел  :)  
 

Андрей VG, у меня получается “расширять” ваш файл: добавлять новые фигуры, и назначать им свои контекстные меню на ПКМ, но не понимаю как это всё сделать с нуля. Если я создаю новый файл, вставляю те же макросы, добавляю фигуры, даю им такие же имена, как у вас в файле, то ничего не получается. Подскажите пожалуйста, что не так.

 
Цитата
rud.666 написал:
что не так.
Отсутствие любопытства и стойкое не желание читать предлагаемый к изучению материал.  :)  Настройка пользовательского интерфейса приложений Microsoft Office
Изменено: Андрей VG - 26.10.2020 18:59:41
Страницы: 1
Наверх