やったこと
大量にグラフを作るマクロを作りました。流れとしては、まずはひな形のグラフをひとつ手動で作ります。そして、それをアクティブにしてマクロを実行します。すると、自動で次々にグラフをコピーし、参照範囲を更新していきます。
作成されたグラフは、↓のように横方向に最大5個並べられ、下の段に続いて貼り付けられていきます。
■■■■■
■■■■■
■■■■■
■■
作成したグラフは、縦軸が標高で横軸が水温のグラフになっています。
Sub 鉛直グラフ作成()
'雛形のグラフを一つ作っておく。
'そのグラフをアクティブにしてマクロ実行
'必要数コピーして各系列の参照範囲を更新
N = Cells(1, 3).End(xlDown).Row - 2 'グラフの個数
flag = 1
Set orig_Chart = ActiveSheet.ChartObjects(1)
Set last_Chart = orig_Chart
For i = 2 To N
Set dupli_Chart = last_Chart.Duplicate
'flagによって配置位置調節
With dupli_Chart
If flag < 5 Then 'flagが5でなければ右に続けてはりつけ
.Left = last_Chart.Left + last_Chart.Width
.Top = last_Chart.Top
flag = flag + 1
Else 'flagが5だったら下にはりつけ
.Left = orig_Chart.Left
.Top = last_Chart.Top + last_Chart.Height
flag = 1
End If
End With
'グラフタイトルと系列更新する。※ここはデータに併せて修正する。
'N+2行~がデータ。系列1が上流。系列2が下流
'系列1・・・・・X(水温):15~26列、Y(標高):3~14列
'系列2・・・・・X(水温):40~51列、Y(標高):28~39列
With ActiveSheet.ChartObjects(i).Chart
.ChartTitle.Text = "=" & ActiveSheet.Name & "!R" & (i + 2) & "C2"
.SeriesCollection(1).XValues = Range(Cells(i + 2, 15), Cells(i + 2, 26))
.SeriesCollection(1).Values = Range(Cells(i + 2, 3), Cells(i + 2, 14))
.SeriesCollection(2).XValues = Range(Cells(i + 2, 40), Cells(i + 2, 51))
.SeriesCollection(2).Values = Range(Cells(i + 2, 28), Cells(i + 2, 39))
End With
Set last_Chart = ActiveSheet.ChartObjects(i)
Next i
End Sub
↓やり直したいときに、ひな形以外のグラフを消す。
Sub 雛形以外のグラフを削除()
Dim N As Integer
N = ActiveSheet.ChartObjects.Count
Do
ActiveSheet.ChartObjects(N).Delete
N = N - 1
Loop Until N = 1
End Sub