2017-12-19 5 views
0

私は、値そのものや出所などに応じて、Excelの図の同じ折れ線グラフに3種類の色を表示する方法を探していますどのシートfe)。今までVBA Excel:値によって1つの線図で色分けされます

、私は次のコードを持っている:

Sub ChangeColor() 
Dim i As Integer 
Dim IntRow As Integer 
Dim r As Range 

ActiveSheet.ChartObjects("Cash").Activate 
ActiveChart.SeriesCollection(1).Select 

IntRow = ActiveChart.ChartObjects("Cash").Count 

For i = 2 To IntRow 
    Set r = Cells(2, i) 
    If r.Value < 3000 Then 
     Selection.Border.ColorIndex = 5 
    Else 
     Selection.Border.ColorIndex = 9 
    End If 
Next 
End Sub 

しかし、声明を考慮して、私は最初のColorIndexを変更するたびに行全体の色のみが変更されていない場合。根底にあるテーブルの値に応じて、行の一部をどのように色付けするかはわかりません。

さらに、IntraowをActiveChart.ChartObjects("Cash").Countと定義すると、配列の長さを取得できません。この問題は、手作業でカウントしてIntRowを整数として宣言することで解決できますが、上記のバージョンはより良いように見えます(もちろん可能な場合)。

ご協力いただきありがとうございます。ありがとうございました。

アレクサンドラ

答えて

2

あなたはグラフ系列から直接値を読み取ることができます。

Sub ChangeColor() 
    Dim cht As Chart, p As Point, s As Series 
    Dim i As Integer 
    Dim numPts As Long 

    'access the chart directly - no select/activate required 
    Set cht = ActiveSheet.ChartObjects("Cash").Chart 

    'reference the first series 
    Set s = cht.SeriesCollection(1) 

    'how many points in the first series? 
    numPts = s.Points.Count 

    'loop over the series points 
    For i = 1 To numPts 

     Set p = cht.SeriesCollection(1).Points(i) 

     p.Border.ColorIndex = IIf(s.Values(i) < 3000, 5, 9) 

    Next 
End Sub 
+0

はティム、私はそのように行うことを試みることができ、ありがとうございました。しかし、私は何をすることができます私はセル自体を参照する必要がある場合?ポイントは、どのシート(予測、計画、およびステータスシートを持っているか)によってテーブルの番号(各セル内)が来るかどうかによって、ラインの色を変える必要があるということですから。それで私はなぜ細胞を参照しようとしたのですか?あなたは何か考えていますか? –

+0

特定のシリーズのソース範囲を特定したい場合は、ここにその情報があります:http://www.vbaexpress.com/forum/showthread.php?30968-Finding-data-range-reference-for-a-series -in-chart-using-vba –

関連する問題