14

ボタンに関連付けられたマクロがワークシートのユーザー入力パラメーターに基づいて動的な形状を描画する Excel ワークシートがあります。

シートをきれいにする、つまりワークシート内のすべての図形を削除する新しいマクロを作成しようとしています。

以下のコードを使用してみましたが、実際にはすべての形状が削除されますが、その過程でボタン フォーム コントロールも削除されます。ワークシートの図形 (矢印、テキスト ボックス、楕円など) のみを取り除く簡単な方法はありますか? 本当にありがとう!!!

Sub DeleteAllShapes()

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
    Shp.Delete
Next Shp

End Sub
4

1 に答える 1

21

オートシェイプとテキストボックスのみを削除するには、次を使用できます。

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

または、逆に作業して、削除しないタイプを指定することもできます。列挙型を使用できますが、型名を使用する方が読みやすくなります。次のスニペットは、フォーム コントロールと 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

MSO シェイプ タイプの完全なリスト。 http://msdn.microsoft.com/en-us/library/office/aa432678(v=office.12).aspx

Ron de Bruin には、この質問に出くわした他の人に関連する可能性のあるスニペットの優れたコレクションがあります。 http://www.rondebruin.nl/controlsobjectsworksheet.htm

于 2012-10-08T21:42:14.710 に答える