Можно ли идентифицировать идентификатор формы, который запускает наведение мыши на презентации PowerPoint? - PullRequest
2 голосов
/ 23 марта 2011

Можно ли идентифицировать идентификатор формы, который вызывает наведение мыши на презентации PowerPoint.

То, что я хочу сделать, - это создать на слайде серию фигур с заголовками, и когда пользователь наводит курсор мыши на фигуру, я хочу использовать VBA, чтобы показать больше деталей о фигуре в другой части страницы, возможно отдельное текстовое поле справки. Затем я мог бы использовать выбранные фигуры ALt Text для отображения в окне справки. Что я не вижу, так это как определить, какая фигура запустила макрос при наведении курсора. Это возможно? Если бы я мог определить форму, которая вызвала действие, я мог бы получить информацию об этой форме.

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Объект Shape в PowerPoint не позволяет вам взаимодействовать с его событиями, как это обычно происходит с другими объектами в коде VBA.Только два «события», которые выставлены, на самом деле не являются событиями VBA.Это специальный класс, называемый Actions, и это ppMouseOver и ppMouseClick.Если вам заранее известна вся информация о ваших фигурах и соответствующая информация, вы можете написать код, который будет выполнять то, что вы хотите, но все это будет жестко закодировано, что, вероятно, не то, что вы хотите.при запуске презентации можно запустить что-то вроде этого:

Sub SetActionsRoutine()

    Shape1.ActionSettings(ppMouseOver).Action = ppActionRunMacro
    Shape1.ActionSettings(ppMouseOver).Run = "showInformation1"

    Shape2.ActionSettings(ppMouseOver).Action = ppActionRunMacro
    Shape2.ActionSettings(ppMouseOver).Run = "showInformation2"
    ...
    ...
End Sub

И затем, когда вы выполняете MouseOver с этими фигурами, запускается одна из следующих подпрограмм.очень ограничен и требует написания подпрограммы для каждой фигуры на слайде.Возможно, не тот подход, который вам нужен, но опять же, с PowerPoint, ваши возможности очень ограничены.

0 голосов
/ 19 мая 2011

Новичок в StackOverflow, поздно ответить, но вы можете сделать это:

Sub RespondToShape (oSh как Shape) MsgBox "Вы нажали" & oSh.Name End Sub

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

...