单击时引用多个形状

Reference multiple shapes on click

我有一张包含 3 种形状的幻灯片:A、B 和 C。如果单击 A,我需要将 C 设置为可见,如果单击 B,则设置为不可见。我一直在寻找一种方法来获取被单击的形状的 ID,但看起来这是不可能的 (here and it looks like you can do it in Excel but this does not work in 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

这也没有做任何事情。我已经验证了案例陈述是真实的。有人知道根据单击其他形状更改形状可见性的正确语法吗?

这是一个有效的简化版本。变化:

由于向子传递了对单击形状的引用,因此您可以使用 oSh.Parent 获取对幻灯片的引用,这消除了一些复杂性。

我更改了形状名称并确保它们是正确的并按名称引用了形状。 IIRC 你不能通过 ID 直接引用形状,只能通过名称或索引。诚然,使用形状的 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