• ベストアンサー

VBA 図形の削除

以下のようなコードにおいて、図名を指定するのではなく、図の種類を指定して削除したいのです。 テキストボックスを消す グラフを消す オートシェイプを消す などなど、オブジェクトの種類を指定して消すようにしたいのですが、どうすれば良いですか? Sub 指定図形削除()  図名=”削除したい図形名”  For Each zu In ActiveSheet.Shapes   If zu.Name = 図名 Then    zu.Delete    Exit For   End If  Next End Sub

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

  • ベストアンサー
回答No.1

Type プロパティでオブジェクトが図形なら 図形の種類を長整数値で取得できます。 MsoShapeTypeクラスの下に定数があります。 例えば、テキストボックスならmsoTextBox(=17)、 オートシェイプならmsoAutoShape(=1)です。 テキストボックスだけを消したいのなら、 If zu.Type = msoTextBox Then で判定できると思います。

VitaminBB
質問者

お礼

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

この辺(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では駄目なわけですよね。

VitaminBB
質問者

お礼

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

関連するQ&A