はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
12.1 オートシェイプ(図形)や画像を操作する
ワークシート上のオートシェイプ(図形)や画像は、Shapesオブジェクトまたは Shapesコレクションを使って操作します。
Shapesオブジェクト
ワークシート上のオートシェイプや画像を操作するときは、Shapesコレクションを使います。Shapesコレクション内でのオートシェイプや図形の格納順序は、ワークシートに追加した順です。

 図1:Shapesコレクションの書式
シート.Shapes(対象).機能
対象
 操作対象のオートシェイプや画像を、番号もしくは名称で指定します。
 番号指定時の先頭の要素番号は 1です。0も指定できますが、1と同じ内容です。
機能
 プロパティやメソッド、書式のオブジェクトなど、操作内容を記述します。

【記述例】Sheet1のオートシェイプ「四角形 1」を削除する。
Sheet1.Shapes("四角形 1").Delete

また、Shapesオブジェクトを使うと、ワークシート上にオートシェイプや画像を追加する・個数を調べるといった操作が行えます。オートシェイプや画像の追加メソッドを実行したときは、戻り値に追加したオートシェイプや画像の情報(Shapeオブジェクト)が返ります。

 図2:Shapesオブジェクトの書式
Shapes.機能
機能
 プロパティやメソッドを記述します。

【記述例】Sheet1に四角形を追加し、その内容を変数「oBox」に保存する。
Dim oBox As Shepe
Set oBox = Sheet1.Shapes.AddShape(msoShapeRectangle, 100, 100, 128, 192)
【使用例1】シート上のオートシェイプを操作する
ワークシート上の既存のオートシェイプの大きさを変更する事例です。Shapesコレクションに操作対象のオートシェイプ「四角形 1」を指定し、Widthプロパティへ幅を、Heightプロパティへ高さを設定しています。

なお、WidthとHeightに指定する値の単位はポイントです。

Sub ShapeSample()

    With ActiveSheet.Shapes("四角形 1")
        .Width = 50
        .Height = 100
    End With

End Sub
【使用例2】オートシェイプの個数を調べる
ワークシート上に、オートシェイプや図形がいくつあるかを調べる事例です。オートシェイプや図形の数は、ShapesオブジェクトのCountプロパティに保存されています。

なお、ワークシート上にオートシェイプを追加する事例は、「ワークシートに新しいオートシェイプ(図形)を追加する」を参照してください。

Sub ShapeSample2()

    MsgBox ActiveSheet.Shapes.Count & " 個あります" _
         , vbOKOnly + vbInformation _
         , "オートシェイプの個数"

End Sub


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved