删除范围内的一个自选图形 - 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
这就是我尝试做的。当我点击一个按钮时,上面的自选图形被复制到 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