Attribute VB_Name = "Module1" '■ マクロ500連発<第2段> ' ' 既存の埋め込みグラフを整列する ' ' Copyright(C) 2000 Sunago ' '  既存の埋め込みグラフを整列するサンプルです。 ' グラフの作成順(正確にはChartObjectsのメンバ順)に ' アクティブセルの位置からアクティブウィンドウに収ま ' るように並べて配置します。 ' Option Explicit Sub Macro1() Dim objChartA '処理中のグラフを表す Dim objChartZ '1つ前のグラフを表す Dim i As Long Dim nTop As Long Dim nLeft As Long With Worksheets("Sheet1") .Activate .Range("B5").Activate For i = 1 To .ChartObjects.Count If i = 1 Then '1番目のグラフはアクティブセルの右上に配置します。 .ChartObjects(i).Left = ActiveCell.Left .ChartObjects(i).Top = ActiveCell.Top Else Set objChartA = .ChartObjects(i) Set objChartZ = .ChartObjects(i - 1) nLeft = objChartZ.Left + objChartZ.Width '2番目以降のグラフはアクティブウィンドウに収まるように '折り返します。例えば、I列までにグラフを収めるためには、 ' ActiveWindow.Width を .Range("J1").Left に変更します 'If nLeft + objChartA.Width > .Range("J1").Left Then If nLeft + objChartA.Width > ActiveWindow.Width Then nLeft = ActiveCell.Left nTop = nTop + objChartZ.Height Else nTop = objChartZ.Top End If objChartA.Top = nTop objChartA.Left = nLeft End If Next Set objChartA = Nothing Set objChartZ = Nothing End With End Sub