• 締切済み

excelのマクロによるグラフの指定方法

マクロがどのように記録されるかを見ながら、VBAのスクリプトの書き方を学んでいる初心者です。 Sub Macro1() ' ' Macro1 Macro , ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveWindow.ScrollColumn = 1 ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$B$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$B$4:$B$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$C$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$C$4:$C$18" ActiveChart.ChartType = xlLine ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$D$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$D$4:$D$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$E$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$E$4:$E$18" ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).Name = "='平均化'!$F$1" ActiveChart.SeriesCollection(3).Values = "='平均化'!$F$4:$F$18" End Sub 以上のマクロを作成し、実行したのですが、”指定した名前のアイテムが見つかりませんでした”と出て、上手く実行されませんでした。 操作対象のオブジェクトを行き来する方法を知りたいのですが、オブジェクトを作成するたびに ActiveSheet.ChartObjects("グラフ 1").Activate のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

>オブジェクトを作成するたびに ≪例1≫ SelectしないでWith文で括ってやります。 With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlLine With .SeriesCollection.NewSeries .Name = "='平均化'!$B$1" .Values = "='平均化'!$B$4:$B$18" .XValues = "='平均化'!$A$4:$A$18" End With End With ≪例2≫ グラフオブジェクトを数えた値をインデックスに使います。 最後に作成したグラフが指定できます。 With ActiveSheet.ChartObjects(.ChartObjects.Count).Chart With .SeriesCollection.NewSeries .Name = "='平均化'!$F$1" .Values = "='平均化'!$F$4:$F$18" .XValues = "='平均化'!$A$4:$A$18" End With End With ≪例3≫ オブジェクト変数を使います。 Dim cht As Shape Set cht = ActiveSheet.Shapes.AddChart With cht.Chart.SeriesCollection.NewSeries .Name = "='平均化'!$F$1" .Values = "='平均化'!$F$4:$F$18" .XValues = "='平均化'!$A$4:$A$18" End With ChartObjects.Addでもグラフが作成できます。 私はこちらの方を好みます。 Worksheets("sheet1").ChartObjects.Add ≪参考≫ グラフ操作関連のテクニック http://moug.net/tech/exvba/0021.htm

すると、全ての回答が全文表示されます。

関連するQ&A