删除范围内的一个自选图形 - VBA

Delete one autoshape in a range - VBA

这就是我尝试做的。当我点击一个按钮时,上面的自选图形被复制到 A8:F12 矩形中。

第一个按钮的代码(录制宏):

Sub addTextbox1()
    Range("A2:C3").Select
    Range("C2").Activate
    Selection.Copy
    Range("B9").Select
    ActiveSheet.Paste
End Sub

我的问题是我想制作一个可以擦除 A8:F12 范围内自选图形的按钮。我发现它删除了工作表中的所有自选图形:

Sub DeleteShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
Shp.Delete
Next Shp
End Sub

或按名称删除自选图形(在我的情况下不起作用,生成了新的自选图形,所以我不知道它们的名字)

我知道单击形状并按 'delete' 很快,但出于好奇,我想知道是否可以在 VBA

中执行此操作

下面的一种方法是测试形状的左上角单元格是否在您的删除范围内:

Sub DeleteShapes()
Dim Shp As Shape
    For Each Shp In ActiveSheet.Shapes
         If Not Application.Intersect(Shp.TopLeftCell, ActiveSheet.Range("A8:F12")) Is Nothing Then Shp.Delete
    Next Shp
End Sub