即効テクニック |
対象の図形の上端位置、左端位置を設定します。
用いられる座標軸は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プロパティで図形の左上端にあるセルを参照することができます。