首页 > 解决方案 > 如何检查是否在 PowerPoint 幻灯片上选择了任何形状?

问题描述

现在的情况:

我有一张幻灯片,上面有几个形状,我希望 vba 代码的行为不同,具体取决于用户是否在幻灯片上选择了任何形状(所以根本没有形状)

我试图通过

Sub DETERMINE_IF_ANY_SHAPE_IS_SELECTED ()
    
    Debug.print ActiveWindow.Selection.ShapeRange.Count

End Sub

但这会引发错误,因为选择“无”进行计数。我没有像我希望的那样取回值 0。

您可以在哪里提供帮助:

有没有办法确定是否选择了任何(!)形状?或者我可以通过错误处理来解决这个问题吗?

标签: vbapowerpoint

解决方案


检查选择类型:

Sub test()
   If ActiveWindow.Selection.Type = ppSelectionShapes Then
     Debug.Print ActiveWindow.Selection.ShapeRange.Count & " shapes selected"
   Else
     Debug.Print "no shapes are selected"
   End If
End Sub

如果是ppSelectionNone ( 0),则不选择任何内容。

因此,您还可以检查:

If ActiveWindow.Selection.Type = ppSelectionNone Then

很少需要错误处理。

https://docs.microsoft.com/en-us/office/vba/api/powerpoint.selection

要处理所有这些:

Select Case ActiveWindow.Selection.Type
  Case ppSelectionNone
    ' what to do when nothing is selected

  Case ppSelectionShapes
    ' what to do when shapes are selected

  Case ppSelectionSlides
    ' what to do when slides are selected

  Case ppSelectionText
    ' what to do when text is selected

End Select

推荐阅读