• 締切済み

エクセルVBAで、ある特定の名前のオブジェクトが存在するかどうかの確認方法

Sheets("XXX").Shapes("SN").Deleteとすると、SNという名前のShapeが存在しなと当然エラーになります。 そこで、「SNがあったら削除する」と書きたいのですが、いい方法が思い当たりません。 For Each ~ Nextでshapeの名前を一個ずつしらべ、あったら削除する方法や、存在しない場合 On Error Resume Nextでエラーを強制的に回避するのではなく、Shapes("SN")があればDeleteするというようにすっきり書く方法は無いでしょうか?

みんなの回答

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

いきなり削除かけて無いならOn Error 構文で分岐処理。 "強制的に回避"というのがちんぷんかんぷんなんですが、 削除する→あるならそのまま削除 └→無いなら無視 という分岐処理が一番"すっきり"と書かれるとしか思えないのですが。 まぁgoto処理はコードがややこしくなるという宿命がありますので多用すべきではないでしょうが、その辺は処理を関数化していくなどで対応していくしかないでしょう。