シート内のグラフ(画像)を等間隔に並べる
座標数値は直書きです。本当はユーザーフォームを作ったほうが良い。 並べる順番は、「オブジェクトの選択と表示」で表示されるリスト順です。並び順を変えたい場合は、事前にソートしておいてください。
Sub 画像を並べる() '大体で並べる(重なり回避程度) 'Shapes全部に行うので、画像グラフ混在シートでは不可 ' 'Excel2013の場合、セルB1の座標は top=13.5、Left=54 Dim i As Long Dim x As Long Dim y As Long Const start_top As Long = 13.5 Const start_left As Long = 54 Const offset_h As Long = 550 'グラフサイズにに合わせて設定 Const offset_w As Long = 900 'グラフサイズに合わせて設定 'シート内のグラフ全部に同じ処理をする(グラフ選択不要) Dim myShape As Shape x = start_left y = start_top For i = 1 To ActiveSheet.Shapes.count Set myShape = ActiveSheet.Shapes(i) myShape.Left = x myShape.top = y y = y + offset_h If i Mod 4 = 0 Then 'X方向に4個並べたらY方向を移動させる y = start_top x = x + offset_w End If Next i End Sub
また、グラフオブジェクトをセルの枠に合わせたい場合は、下記を追加します。
'オブジェクトの左上セルの枠線に位置をあわせる(画像が重なる場合がある) myShape.Left = myShape.topLeftCell.Left myShape.top = myShape.topLeftCell.top
改良の余地はたくさんあるのだけれど、とりあえずの間に合わせ、ということで。