宏删除所有项目

时间:2017-11-20 15:52:52

标签: vba excel-vba excel

我有下面的代码,我试图只删除一张图片,但它正在删除工作表上的所有项目(复选框,文本框,按钮等)。

我还应该提一下,表格上有两张图片,但是我希望它只删除第二张图片。

Private Sub DeletePictures()

    Dim shape As Excel.shape

    For Each shape In ActiveSheet.Shapes
        shape.Delete
    Next

End Sub

1 个答案:

答案 0 :(得分:3)

您需要找到形状的名称。

在Excel 2010中:

  • 选择图片并点击“格式”功能区。
  • 在“排列”部分中,单击“选择窗格”图标。工作表上所有形状的名称应显示在工作表的右侧,并突出显示您的选择。

接下来,将代码更新为仅处理指定的形状:

Private Sub DeletePictures()

    Dim shape As Excel.shape

    For Each shape In ActiveSheet.Shapes
        If shape.Name = "Picture 1" Then
            shape.Delete
        End If
    Next

End Sub  

如果要删除所有图片,可以检查形状类型:

If shape.Type = 13 ThenIf shape.Type = msoPicture Then

形状类型的完整列表:
https://msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx

修改

那里有片刻......很明显,一旦你知道了形状的名称就没有必要遍历表格上的所有形状(感谢@CallumDA指出明显的评论)。 :)
ActiveSheet.Shapes("Picture 1").Delete - 是您需要的所有代码。