« 時差の計算 | トップページ | 『Excel VBAベーシック VBAエキスパート』 »

2011年8月21日 (日)

Shapeを指定して削除する

すべてのShapeを選択する方法を
以前の記事『 ActiveSheetのすべてのShapeを選択 』で書きましたが、
この方法を使わなくても
すべてのShapeを選択できることがわかりました。

SelectAllメソッドという
すべてのShapeを選択できるメソッドがありました。

これを使ってすべてのShapeを削除します。
コードはこちら

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

Sub macro110821a()
'Shapeにアクセスする
'すべてのシェイプを選択して削除
   
    ActiveSheet.Shapes.SelectAll
    Selection.Delete
   
End Sub

次にShapeの種類ごとにアクセスしていく方法です。

ActiveSheet.Shapes.TextBox.SelectAll

などとしてもできません。

これにはTypeプロパティを使います。

流れは、
すべてのシェイプをFor Eachステートメントで回していき、
ひとつひとつ目的のTypeであるかをIf文で判定して
操作したいシェイプにアクセスします。
ここで大きさ、色、位置などのプロパティを変更します。
下のコードではTextBox削除していきます。

Typeの種類についてはこちらのWebページを参照してください。
参: MsoShapeType 列挙型

コードはこちら

ShapeにType別にアクセスするコード:

Sub macro110821b()
'Shapeにアクセスする
'Type別
   
    Dim s As Shape
    For Each s In ActiveSheet.Shapes
        If s.Type = msoTextBox Then
            '操作
            s.Delete
        End If
    Next s
   
End Sub

既にシートにあるShapeのTypeが何かわからないときは、
そのShapeを選択して、次のコードを実行します。

Sub kara()
    Stop
End Sub

このコードは何もしません。
中断したところで、
「Selection.ShapeRange.Type」と
ウォッチウィンドウに入力するとTypeがわかります。

イミディエイトに
次のように入力してENTERを押してもわかります。

?Selection.ShapeRange.Type

この場合は数字でしかわかりません。

Shapeについての基本は、
VBAヘルプの「図形で作業する (描画オブジェクト)」に
詳しく書いてあります。

|

« 時差の計算 | トップページ | 『Excel VBAベーシック VBAエキスパート』 »

Excel VBA」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/550472/52521848

この記事へのトラックバック一覧です: Shapeを指定して削除する:

« 時差の計算 | トップページ | 『Excel VBAベーシック VBAエキスパート』 »