2013-05-29 72 views
0

我試圖根據不同於X或Y的值更改散點圖中的標記顏色。該值位於同一行中作爲標記的X和Y。 我已經這樣做了,但我似乎無法正確定義值區域。 我真的不代碼,所以我可能會在錯誤的方式來尋找它...基於非X或Y的值更改散點圖標記顏色

Sub color_chart() 

Dim chartIterator As Integer, pointIterator As Integer, _ 
    seriesArray() As Variant 

For chartIterator = 1 To ActiveSheet.ChartObjects.Count 
    seriesArray = ActiveWorkbook.Sheets("Graph").ChartObjects(chartIterator). _ 
          Chart.SeriesCollection(1).Values 

For pointIterator = 1 To UBound(seriesArray) 
     Dim value As Range 
     Set value = Worksheets("Ranking").Range("F6", "F11") 
     Dim valueR As Integer 
     Set valueR = value.Cells.Item(1, pointIterator) 

     If valueR(pointIterator) = 0 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(255, 0, 0) 
     ElseIf valueR(pointIterator) = 1 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(255, 102, 102) 
     ElseIf valueR(pointIterator) = 2 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(255, 128, 0) 
     ElseIf valueR(pointIterator) = 3 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(255, 255, 0) 
     ElseIf valueR(pointIterator) = 4 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(128, 255, 0) 
     ElseIf valueR(pointIterator) = 5 Then 
      ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
      Chart.SeriesCollection(1).Points(pointIterator).Interior.Color = _ 
      RGB(0, 255, 0) 

     End If 

Next pointIterator 

Next chartIterator 

End Sub 

回答

1

您已經聲明ValueR爲整數,所以你不能使用Set關鍵字來分配其價值。此外,您可能希望使用Select Case而不是嵌套的If...ElseIf...語句,該語句將更清晰易讀。我也用一個With塊,除去到圖表/系列/點對象了一些多餘的電話:

With ActiveWorkbook.Sheets("Sheet1").ChartObjects(chartIterator). _ 
     Chart.SeriesCollection(1).Points(pointIterator).Interior 
    Select Case ValueR 
     Case Is = 0 
      .Color = _ 
      RGB(255, 0, 0) 
     Case 1 
      .Color = _ 
      RGB(255, 102, 102) 
     Case 2 
      .Color = _ 
      RGB(255, 128, 0) 
     Case 3 
      .Color = _ 
      RGB(255, 255, 0) 
     Case 4 
      .Color = _ 
      RGB(128, 255, 0) 
     Case 5 
      .Color = _ 
      RGB(0, 255, 0) 
    End Select 
End With 
+0

謝謝,但之後我怎麼確定去哪裏查找信息,如果我不能使用與設置一個整數? – segolene

+0

只需刪除單詞'Set',並且您留下了一個語法上有效的語句:'valueR = value.Cells.Item(1,pointIterator)' –