- ベストアンサー
VBA 図形の削除
以下のようなコードにおいて、図名を指定するのではなく、図の種類を指定して削除したいのです。 テキストボックスを消す グラフを消す オートシェイプを消す などなど、オブジェクトの種類を指定して消すようにしたいのですが、どうすれば良いですか? Sub 指定図形削除() 図名=”削除したい図形名” For Each zu In ActiveSheet.Shapes If zu.Name = 図名 Then zu.Delete Exit For End If Next End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Type プロパティでオブジェクトが図形なら 図形の種類を長整数値で取得できます。 MsoShapeTypeクラスの下に定数があります。 例えば、テキストボックスならmsoTextBox(=17)、 オートシェイプならmsoAutoShape(=1)です。 テキストボックスだけを消したいのなら、 If zu.Type = msoTextBox Then で判定できると思います。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
この辺(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では駄目なわけですよね。
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。