形状。键入…在Excel/PPT VBA中删除

形状。键入…在Excel/PPT VBA中删除,excel,powerpoint,vba,Excel,Powerpoint,Vba,我正在尝试删除幻灯片上的现有形状(图片),并尝试了以下操作,但均无效。作为背景,此代码在Excel中运行,但与powerpoint交互,这只是代码的一部分。其他一切都很好(PPPres已经定义好了)。我还尝试了索引形状(即使它是幻灯片上唯一的一个)和使用for循环,但似乎仍然无法使其工作 With PPPres.Slides(5).Shapes If Shapes.Type = msoPicture Then .Delete End If End With *

我正在尝试删除幻灯片上的现有形状(图片),并尝试了以下操作,但均无效。作为背景,此代码在Excel中运行,但与powerpoint交互,这只是代码的一部分。其他一切都很好(PPPres已经定义好了)。我还尝试了索引形状(即使它是幻灯片上唯一的一个)和使用for循环,但似乎仍然无法使其工作

 With PPPres.Slides(5).Shapes
    If Shapes.Type = msoPicture Then
       .Delete
    End If
 End With
*错误-找不到方法或数据成员(在.Delete上)。我知道“.Delete”只在“with语句”中起作用,但我有它,所以我不知道是什么错了。话虽如此,我还是尝试了以下方法:

 If PPPres.Slides(5).Shapes.Type = msoPicture Then
         Shapes.Delete
 End If
*错误-找不到方法或数据成员(在.Type上)。我知道“.Type”是存在的,所以我对问题所在感到困惑


谢谢你的帮助

我认为,在这种情况下,最好对每个循环使用。如果有帮助,请参见下文

For Each shp In PPPres.Slides(5).Shapes
     If shp.Type = msoPicture Then
         shp.Delete
     End If
Next shp

“形状”返回对幻灯片的整个“形状”集合的引用。 如果您确定只有一个形状,请使用

With PPPres.Slides(5).Shapes(1)
  If .Type = msoPicture Then
    .Delete
  End If
End With

谢谢你的帮助。我确信只有一种形状,但为了覆盖我的基底,我将使用第二种答案,使其更坚固。谢谢,这正是我所需要的!