Страницы: 1
RSS
Запуск макроса, по клику правой кнопки мыши по фигуре (Rectangle)
 
От компьютерного программирования я далек, однако хитросплетения судьбы, привели меня к подобной необходимости.

1. Возможно ли отследить правый клик по фигуре (Rectangle)?
По ячейке, это можно сделать через worksheet_BeforeRightClick, а по фигуре/рисунку ничего подобного не нашел.

2. Если таким образом запустить нельзя, то подскажите макрос, который бы запускался при выделении фигуры, занося часть ее имени в переменные.

Например:
Выделена фигура "Rectangle_26_74"
Занести в переменную X цифры 26 как число
занести в переменную Y цифры 74 как число


3. Если и при выделении фигуры запустить макрос нельзя, то может есть возможность отследить координаты правого клика?

4. Ну и на последок, может в этом непростом деле помочь событие AppEvent_SheetBeforRightClick?
А то у меня выдает ошибку "user-defined type not defined"
при объявлении
Код
Dim myAppEvent As New cl_AppEvents

Пробавал так
Код
Set myAppEvent.AppEvent = CreateObject("Application")

Тоже не вышло. В общем разобраться в событии не смог. Срабатывает ли оно при клике по рисунку и что возвращает в Target?

Собственно код
Код
Sub InitializeAppEvent()
    Set myAppEvent.AppEvent = Application
End Sub
Private Sub AppEvent_SheetBeforRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Правый клик"
End Sub
 
Правый клик по фигуре - дело гиблое.
Пытался я как то переделать контекстное меню правого клика по фигуре, но так и не смог.
Вам что в итоге нужно?
Цитата
berkut000 пишет:
...подскажите макрос, который бы запускался при выделении фигуры, занося часть ее имени в переменные.
Это просто.
Например
Код
strImgName = ActiveSheet.Shapes(Application.Caller).Name

получите переменную с именем фигуры и дальше можете её расчленять на иксы и игрики  :)
 
Цитата
Выделена фигура "Rectangle_26_74"
Занести в переменную X цифры 26 как число
занести в переменную Y цифры 74 как число
Ловите пример
 
Спасибо ребята. Мне ваши советы в дальнейшем помогут, но это не то.
Я полагал, что есть событие, которое можно отследить при выделении рисунка.
В целом я нашел обходной путь, но он имеет ряд недостатков.
Одним из недостатков, является постоянно "активная для ввода" ячейка. Но так, как у меня на этом листе, все управление через кнопки, и нет ввода данных, мне подобное не мешает.

А вот вторая проблема, это появление контекстного меню, которое приходиться сбрасывать левым кликом мимо него.

По этому у меня новый вопрос.

Как запретить отображения контекстного меню?

Прикреплю пример того, что у меня получилось.
Изменено: berkut000 - 18.03.2013 20:57:36
 
А чем не приглянулось Application.Caller?
 
Ваша конечная цель продолжает оставаться загадкой.

Мне в одном проекте нужно было кликом по фигуре получить возможность некоторых действий над ней(фигурой). Я сделал контекстное меню по левому клику, так как уже сказал ранее, доступа к правому не смог найти.
Буду следить за темой, а вдруг плохо искал.

Удачи!
 
В общем мне удалось избавиться от контекстного меню, с помощью
SendKeys "{ESC}"
Моя конечная цель, удаление кнопки(фигруры, фото), нажатием правой кнопки мыши над ней.
В целом, волучился тот результат, который меня устраивает. Вот только всплыл странный баг. При любом клике левой кнопки мыши, включается/выключается Nam Lock. Буду пытаться его обойти.

Прилагаю результат

З.Ы. В начале, надо кликнуть по фигуре ЛКМ, ибо не привязывал нчало к активации листа.
Страницы: 1
Наверх