エクセル2003(VBA)で散布図グラフの元データの範囲を可変にしたい
エクセル2003の散布図グラフで複数の系列を表示しています。ところが
データの量(行数)がすぐに変わりますので元データの範囲を可変したいのですが
うまくいきません。
また、グラフ作成後、下記コードにてラベルの一括貼付けをしております。
下記に具体的なデータを記載しますので、どうかお知恵をお貸し下さい。
よろしくお願い致します。
■現在
元データのプロパティ より
Xの値:=Sheet1!$E$3:$E$324
Yの値:=Sheet1!$F$3:$F$324
※本当はここで"Sheet1!$E$3:$E$65536"とSheet1!$F$3:$F$65536にすれば
データは取得できますが、下記マクロを実行すると当然オーバーフローします
要はここで存在するデータ範囲に都度変わっていくような事ができれば
それでも解決するかも?
□使用しているマクロ
Sub 全系列の一括ラベル表示()
Dim Counter As Integer, ChartName As String, xVals As String
Application.ScreenUpdating = False
For i = 1 To ActiveChart.SeriesCollection.Count
'Store the formula for the first series in "xVals".
xVals = ActiveChart.SeriesCollection(i).Formula
'''''' 'ここでxvalsにデータ元が入ったままなのでそれを存在するデータ範囲に変わるようにしたいーーーー
xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
Do While Left(xVals, 1) = ","
xVals = Mid(xVals, 2)
Loop
For Counter = 1 To Range(xVals).Cells.Count
If Range(xVals).Cells(Counter, 1).Offset(0, -1).Value = "" Then
With ActiveChart.SeriesCollection(i).Points(Counter)
.HasDataLabel = True
.DataLabel.Text = ""
End With
Else
With ActiveChart.SeriesCollection(i).Points(Counter)
.HasDataLabel = True
.DataLabel.Text = Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
End With
End If
Next Counter
Next i
End Sub
お礼
ありがとうございました。