« PresetTextEffectのビジュアル一覧 | トップページ | あるあるエラー:Webクエリ »

2011年6月25日 (土)

ActiveSheetのすべてのShapeを選択

ActiveSheetのすべてのShapeを指定することは
以外に難しいです。

前記事を作っている途中のことですが、
作成したたくさんのShapeを削除したいとき
1つ1つ手で選択して削除するのも面倒なので、
シートごと削除してました。

それで ActiveSheetのすべてのShapeを指定すれば
全削除できると考えたのですが、
Shapes.Deleteみたいに簡単にはできませんでした。

Shapesの名前の入れたVariant型の配列を作成して、
これをすべてのShapeを指定するのに使います。

コードはこちら

ActiveSheetのすべてのShapeを削除するコード:

Sub macro110625a()
'ActiveSheetのシェイプをすべて削除

    Dim i As Integer
    Dim strName() As Variant
    ReDim strName(1 To ActiveSheet.Shapes.Count)
   
    For i = 1 To ActiveSheet.Shapes.Count
        strName(i) = ActiveSheet.Shapes(i).Name
    Next i
   
    'ActiveSheet.Shapes.Range(strName).Select
    ActiveSheet.Shapes.Range(strName).Delete
   
End Sub

全部を選択したいときは
コメントにしてあるSelectのほうを使ってください。

|

« PresetTextEffectのビジュアル一覧 | トップページ | あるあるエラー:Webクエリ »

コメント

For文でまわさなくても

ActiveSheet.Shapes.SelectAll
Selection.Delete

で削除出来ますよ( ^ω^)

投稿: 通りすがり | 2011年7月29日 (金) 01時14分

ご指摘ありがとうございます。

実は私も記事を作成した後にて
そのことがわかりましたので
後日アップする記事にご指摘の方法を記載する予定です。

このブログでは、結果にたどり着くまでの過程も
記録していきたいと思っておりますので、
そのままにしていました。

このようなブログですが、
またお越しくださるとありがたいです。

投稿: 管理人やむえむ | 2011年7月30日 (土) 10時30分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ActiveSheetのすべてのShapeを選択:

« PresetTextEffectのビジュアル一覧 | トップページ | あるあるエラー:Webクエリ »