質問: Range("A1014:A3014, B1014:B3014") 'Sheets(op.Cells(2 + i - 1, "B").Value). 'グラフにデータソースを設定 Worksheets(2).Activate cht.Chart.SetSourceData Source:=rng Next End Sub ```
回答: 複数のシートにあるデータをひとつのグラフにまとめたいということですね。 この場合、毎回グラフを作成してデータをセットするのではなく、最初に作ったグラフにデータ系列を追加していくことになります。 ⇒参考 ``` Sub GrapfGT() Dim op As Worksheet, sn As Worksheet, i As Integer Dim cht As ChartObject Dim rng As Range Set op = Workbooks("CAB-Grapf.xls").ActiveSheet Application.ScreenUpdating = False 'グラフ作成 Set cht = ActiveSheet.ChartObjects.Add(100, 100, 600, 200) cht.Chart.ChartType = xlXYScatterSmooth 'データ取得ループ For i = 1 To Worksheets(1).Range("H1").Value If i > 10 Then MsgBox "データーがそんなにないよ(V)o¥o(V)" Exit For End If With Worksheets(2 + i) 'Sheets(op.Cells(2 + i - 1, "B").Value) 'データ範囲の取得 If i = 1 Then '初回は見出し列も取得 Set rng = .Range("A1014:A3014, B1014:B3014") 'グラフにデータソースを設定 cht.Chart.SetSourceData Source:=rng Else '2回目以降はデータ系列を追加 Set rng = .Range("B1014:B3014") cht.Chart.SeriesCollection.Add rng End If cht.Chart.SeriesCollection(i).Name = "データ" & i End With Next End Sub ``` 変更のポイントは ・グラフは(ループの外で)1回だけ作成 ・初回のデータ取得時のみA列も取得し、データソースを設定する ・2回目以降はB列のみ取得し、データ系列を追加する ・データ系列が複数になるため名前をつける といったところです。 お試しください。