mar*_*ion 13 excel vba excel-vba
我有一个excel工作表,其中绑定到按钮的宏根据工作表中的用户输入参数绘制动态形状.
我正在尝试编写一个新宏来清理工作表,换句话说,删除工作表中的所有形状.
我尝试使用下面的代码,它确实删除了所有形状,但是按钮形式控件也会在此过程中被删除.有没有一种简单的方法可以摆脱工作表中的形状(箭头,文本框,椭圆等)?谢谢你!
Sub DeleteAllShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
Shp.Delete
Next Shp
End Sub
Run Code Online (Sandbox Code Playgroud)
Jam*_*ull 20
要删除自动形状和文本框,您只能使用:
Sub DeleteAllShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoAutoShape Or Shp.Type = msoTextBox Then Shp.Delete
Next Shp
End Sub
Run Code Online (Sandbox Code Playgroud)
或者,您可以反过来使用并指定不要删除的类型.您可以使用枚举类型,但使用类型名称更具可读性.以下代码段将删除除窗体控件和OLE控件对象之外的所有内容.
Sub DeleteAllShapes()
Dim Shp As Shape
For Each Shp In ActiveSheet.Shapes
If Not (Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl) Then Shp.Delete
Next Shp
End Sub
Run Code Online (Sandbox Code Playgroud)
MSO形状类型的完整列表. http://msdn.microsoft.com/en-us/library/office/aa432678(v=office.12).aspx
Ron de Bruin收集了大量的片段,这些片段可能与遇到此问题的其他人有关. http://www.rondebruin.nl/controlsobjectsworksheet.htm
| 归档时间: |
|
| 查看次数: |
56852 次 |
| 最近记录: |