dポイントプレゼントキャンペーン実施中!

以下のようなコードにおいて、図名を指定するのではなく、図の種類を指定して削除したいのです。

テキストボックスを消す
グラフを消す
オートシェイプを消す
などなど、オブジェクトの種類を指定して消すようにしたいのですが、どうすれば良いですか?

Sub 指定図形削除()
 図名=”削除したい図形名”
 For Each zu In ActiveSheet.Shapes
  If zu.Name = 図名 Then
   zu.Delete
   Exit For
  End If
 Next
End Sub

A 回答 (2件)

Type プロパティでオブジェクトが図形なら


図形の種類を長整数値で取得できます。
MsoShapeTypeクラスの下に定数があります。
例えば、テキストボックスならmsoTextBox(=17)、
オートシェイプならmsoAutoShape(=1)です。

テキストボックスだけを消したいのなら、
If zu.Type = msoTextBox Then
で判定できると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2004/10/09 18:30

この辺(ShapeかOLEObjectかDrawingObjectかControlなど)はバージョンアップともに進化しているところのように思いますが、諸書も体系的記述にでく合わさず、不勉強ですが、オブジェクトの捉え方について


Sub test02()
Dim oObj As Shape
For Each oObj In ActiveSheet.Shapes
MsgBox oObj.Type & "=" & oObj.Name
next
End Sub
を実際のシートでやってみて、考えて見てください。
図形描画でも上記で1と9と出るものがあり、上記分類で
ご質問のニーズに合うのか判りませんが。
ヘルプにShape、ShapeRange の定数の一覧(種類)が載っています。
Sub test03()()
Dim oObj As Object
For Each oObj In ActiveSheet.DrawingObjects
MsgBox oObj.Name
Next
End Sub
のNameでは駄目なわけですよね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2004/10/09 18:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!