複数のグラフを整列させて表示する方法
現在、複数のグラフを作成するマクロを作っています(ちなみに、今日はじめてマクロを用いたグラフ作成に取り組みました)。
それぞれの行に13個のデータが入っていて(平均値と標準偏差がそれぞれ入っている)、それを用いて行ごとにグラフを作成します。
データが格納されている行はだいたい300個くらいなのですが、今のままだと300のグラフがすべて重ねられた状態で出てきます。
これを整列した状態で表示させたいのですが、どのようにすればよいのでしょうか?
あと、今回はほとんど「マクロの記録」で作ったので、なんかソースが汚ないのでもう少し綺麗にならないでしょうか?
下にソースをのせておきます。よろしくお願いします。
Sub Macro6()
'
' Macro6 Macro
'
'
Dim x As Long
Cells(1, 1).Select
x = Range(Selection, Selection.End(xlDown)).Rows.Count
For i = 2 To x
Range(Cells(i, 2), Cells(i, 14)).Select 'これがないと棒どうしが密着したグラフになる。
ActiveSheet.Shapes.AddChart.Select
'データの範囲を指定
ActiveChart.SetSourceData Source:=Range(Cells(i, 2), Cells(i, 14))
'エラーバーをつける
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SeriesCollection(1).HasErrorBars = True
ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range(Cells(i, 15), Cells(i, 27)), MinusValues:=Range(Cells(i, 15), Cells(i, 27))
'Legendを消す
ActiveChart.Legend.Select
Selection.Delete
'タイトルや軸ラベルの名前を変更する
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = Cells(i, 1)
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Text = "Class"
ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Font.Size = 14
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated)
ActiveChart.Axes(xlValue, xlPrimary).axistitle.Text = "Intensity"
ActiveChart.Axes(xlValue, xlPrimary).axistitle.Font.Size = 14
Next i
End Sub
お礼
早速のレスポンスありがとうございました。 一つ目のグラフについてはうまくいきましたが、2つ目のグラフではエラーになりました。 そこで、アドバイスを参考に ActiveSheet.Range("A1").Select の位置を下記のように変更しました所、うまくいきました\(^o^)/ For Each c In ActiveSheet.ChartObjects '---- ActiveSheet.Range("A1").Select '--- c.Height = 200 c.Width = 300 c.Left = Cells(n, "D").Left c.Top = Cells(n, "D").Top n = n + 16 Next おかげさまで、これから一仕事できそうです。 助かりました。 どうもありがとうございました。