web-dev-qa-db-ja.com

セルアドレスを参照するグラフシリーズ名Excel2010 VBA

Excel2010を使用しています。

XY散布図を作成し、好きなようにフォーマットしました。このグラフは何度も再利用しているので、グラフをコピーして、プロットする新しいデータを含む新しいワークシートに貼り付けるだけです。新しいワークシートにグラフを貼り付けた後、次のマクロを使用してグラフを新しいデータで更新します。

Sub DasyLabOilFDa()

Dim SeriesName As Range
Dim FirstSeriesValues As Range
Dim ElapsedTime As Range

'find cell addresses of elapsed time column
Range("C1").Select 'pick cell above the elapsed time column
Selection.End(xlDown).Select 'pick the elapsed time column header
ActiveCell.Offset(1, 0).Select 'selects first data value in Elapsed Time column
Set ElapsedTime = Range(Selection, Selection.End(xlDown)) 'set ElapsedTime variable to the range of data

'find cell addresses for FirstSeries in the top chart
Range("D1").Select 'pick cell above the first series column
Selection.End(xlDown).Select 'pick the first series column header
Set SeriesName = ActiveCell 'set SeriesName variable to the name of the data column's header
ActiveCell.Offset(1, 0).Select 'selects first data value in data column
Set FirstSeriesValues = Range(Selection, Selection.End(xlDown)) 'set FirstSeriesValues variable to the range of data

ActiveSheet.ChartObjects("TopFDa").Select
ActiveChart.SeriesCollection(1).Name = SeriesName
ActiveChart.SeriesCollection(1).Values = FirstSeriesValues
ActiveChart.SeriesCollection(1).XValues = ElapsedTime

End Sub

プロットしているデータ系列は複数ありますが、上記は、新しいワークシートに貼り付けたグラフにワークシートのデータを入力するマクロを取得する方法を示すのに十分なコードです。

マクロの実行後、グラフは凡例に示されているようにシリーズの名前を正しく命名します(シリーズの名前はデータ列のヘッダーによって決定されました)

問題は、シリーズ名がセルアドレスを参照していないことです。シリーズを編集しようとすると、シリーズ名入力ボックスが空白になります。

結果のグラフが列ヘッダーのセルアドレスをシリーズ名として参照するようにコードを変更するにはどうすればよいですか?

1
Armadillo

Excel2007のコピーとSeries.NameプロパティのドキュメントでExcel開発者リファレンスを確認しました。

備考

「= Sheet1!R1C1」のように、R1C1表記を使用して参照できます。

私はこれをテストしましたが、うまくいきました。特定のセルに設定し、そのセルのテキストを変更すると、シリーズのタイトルが自動的に更新されました。

あなたの場合、あなたは使用する必要があります

ActiveChart.SeriesCollection(1).Name = "='" & ActiveSheet.Name & "'!" & SeriesName.Address(,,xlR1C1)
1
Scarlet Manuka