|
kanabunさま
アドバイスありがとうございます。
まさに、頂いたコードで正しく色分けができました!
重ねて、いくつかわからないことがあるのですが
ご教授いただけますでしょうか。
1.もともとのコードでは、何の値を参照して各データポイントの色を
決めていたのでしょうか?
(データがある行の範囲を指定して、その範囲のループを回し、
データポイントと同じ行のL列の値を参照させたつもりだったのです。
一応、10行ぐらいのデータではちゃんと動くことを確認しました)
2.>Set Cht = ActiveSheet.ChartObjects(1).Chart
ここで指定しているChartObjects(1)は、インデックスNo1のグラフ
という理解でよろしいでしょうか。
頂いたコードでは、グラフがたくさんあるときに対応しづらいので
Activechartのインデックスを得るということで
Dim chtid As String '←追加
Dim Cht As Chart
Dim Ser As Series
Dim ss As String
Dim rngY As Range
Dim v, i As Long
Dim co As Long
Dim bo As Long
chtid = ActiveChart.Index
Set Cht = ActiveSheet.ChartObjects("chtid").Chart '←変更
としたのですが、「アプリケーション定義又はオブジェクト定義のエラー」
となってしまいます・・
複数のグラフがあるときに、指定する方法を教えていただけますでしょうか。
3.> Set Cht = ActiveSheet.ChartObjects(1).Chart
> Set Ser = Cht.SeriesCollection(1)
> ss = Ser.Formula '系列の元データ範囲式より
> Set rngY = Excel.Range(Split(ss, ",")(2)) 'Y軸データ範囲を取得
> i = rngY.Column 'その行範囲の
ここまでは理解できたのですが
> v = rngY.Offset(, 12 - i) 'L列の値を配列に入れる
vの定義を理解できていません。
12 - iでL列を指定しているのは分かるのですが、上の式で
セル(i, v)の値を指定している ということでいいのですか?
上のことがわかっていないので、これ以降の
For i = 1 To UBound(v)
Select Case v(i, 1) がぴんとこないのです。
お忙しいところ恐れ入りますが、よろしくお願いします。
|
|