• ベストアンサー

オートシェイブだけ削除したい場合、

シートの上にオートシェイブとOLEオブジェクトの方のコマンドボタンがあり、 オートシェイブだけ削除したい場合、 どのようなvbaコードになるのでしょうか? Sub Sample() ActiveSheet.Shapes.Delete End Sub 上だと 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」 になります。

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

こんな感じでどうでしょう? Sub Sample1() Dim SH As Shape     For Each SH In Sheets("シート名").Shapes         If SH.Type <> 12 Then             SH.Delete         End If     Next  End Sub ActiveXコントロールは、Typeの値が「12」ですので、 全ての図形のTypeを確認し、「12」以外なら消してやると言う内容です。 補記) 図形を削除するときは Sub Sample() ActiveSheet.Shapes(1).Delete End Sub のように、図形の連番を指定してやるのが一般的です。 表示されているシートの全ての図形を削除するなら Sub sample2()     ActiveSheet.Shapes.SelectAll     Selection.Delete End Sub こんな感じです。

xhermfodhb
質問者

お礼

ありがとうございました。

関連するQ&A