| 
    
     |  | 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) がぴんとこないのです。
 
 お忙しいところ恐れ入りますが、よろしくお願いします。
 
 |  |