Ссылка нескольких фигур на клик - PullRequest
0 голосов
/ 24 января 2019

У меня есть слайд с 3 формами: A, B a C. Мне нужно установить C видимым, если A нажимали, и невидимым, если B нажимали. Я искал способ получить идентификатор формы, по которой щелкнули, но похоже, что это невозможно ( здесь и похоже, что вы можете сделать это в Excel, но это не работает в powerpoint ).

Я также пытался использовать следующее:

Sub test(oSh As Shape)
    Dim thisSlideNum As Long
    thisSlideNbr = ActivePresentation.SlideShowWindow.View.slide.SlideIndex

    Select Case oSh.Name
        Case "A"
            ActivePresentation.SlideShowWindow.View.slide.Shapes([ID of C]).Visible = 0

    End Select

End Sub

Однако это не работает. Я тоже пробовал, тоже самое с линией

ActivePresentation.Slides(1).Shapes([ID of C]).Visible = 1

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

1 Ответ

0 голосов
/ 25 января 2019

Вот упрощенная версия, которая работает.Изменения:

Поскольку подпункту передается ссылка на форму, по которой щелкнули, вы можете получить ссылку на слайд, используя oSh.Parent, что устраняет некоторую сложность.

Я изменил имена фигур и убедился, что они правильные, и ссылался на формы по именам.IIRC вы не можете напрямую ссылаться на фигуры по ID, только по имени или индексу.Конечно, может быть полезным использование идентификатора формы, но для этого вам нужно написать функцию FindShapeByID самостоятельно.

Sub test(oSh As Shape)

    Select Case oSh.Name
        Case "Rectangle 5"
            oSh.Parent.Shapes("Rectangle 7").Visible = True
        Case "Rectangle 6"
            oSh.Parent.Shapes("Rectangle 7").Visible = False
    End Select

End Sub
...