複数のグラフを整列させて表示する方法
現在、複数のグラフを作成するマクロを作っています(ちなみに、今日はじめてマクロを用いたグラフ作成に取り組みました)。
それぞれの行に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
お礼
お忙しい中、ご回答ありがとうございます。 変数の確認やコントロール再描画など試した結果、 結局はシートの保護を解除させる事で解決しました。 また、xls88様から頂いたアドバイスにより 質問する際の情報が全然足らず、質問が質問になって いない事に気付かされました。そのままスルーせずに、 もっと情報を提供するようアドバイスいただき、 大変ありがたく、勉強になりました。以後気を付けます。