2015-05-04 73 views
1

 在一个范围内删除一个自定形 - 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 

或它的名字删除自选图形(不要在我的情况下工作,会产生新的自选图形,所以我不知道他们的名字)

我知道这是快点击形状,然后按'删除',但好奇心,我想知道是否有可能在VBA中做到这一点

回答

1

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

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