即効テクニック

図形操作関連のテクニック

図形の位置を設定する

(Excel 2000/2013/2016)

対象の図形の上端位置、左端位置を設定します。
用いられる座標軸はRangeオブジェクトのTop/Leftプロパティと同じなので、それを利用して目的の位置に図形を配置するといいでしょう。

構文 Object.Top  図形の上端位置  設定/取得
   Object.Left  図形の左端位置   設定/取得

設定項目  内容
Object   Shape、ShapeRangeコレクションオブジェクト [省略不可]

次のサンプル1はアクティブシートのすべての図形をセルB2の位置へ移動させます。

●サンプル1●


 Sub TopAndLeftSamp1()
     Dim Sh As Shape

     For Each Sh In ActiveSheet.Shapes  '---アクティブシート全ての図形に対し
         Sh.Top = Range("B2").Top       '---上端位置をB2の上端へ
         Sh.Left = Range("B2").Left     '---左端位置をB2の左端へ
     Next Sh

 End Sub

図形間の元の位置関係は失われ、すべての図形がセルB2の位置に集まります。

●サンプル2●


 Sub TopAndLeftSamp2()
     Dim myShRange As ShapeRange

     ActiveSheet.Shapes.SelectAll          '---全ての図形を選択
     Set myShRange = Selection.ShapeRange  '---選択図形範囲を変数に格納
     With myShRange
         .Group                       '---グループ化
         .Top = Range("B2").Top       '---図形範囲の上端位置をB2の位置へ
         .Left = Range("B2").Left     '---図形範囲の左端位置をB2の位置へ
         .Ungroup                     '---グループ化解除
     End With

 End Sub

すべての図形を選択してグループ化してから図形の位置を設定し、その後グループ化を解除しています。

●ポイント●
元の位置を基準に上下左右へ図形を移動させるには、IncrementTop/IncrementLeftメソッドを使用します。また、ShapeオブジェクトのTopLeftCellプロパティで図形の左上端にあるセルを参照することができます。