2013-02-27 55 views
4

我試圖讓圖表中的點如果在特定值範圍內(即,> 1是綠色,< 1是紅色,其他是藍色),它們的顏色會發生變化。我無法確定如何讓VBA給我任何給定點的價值。確定Excel中某個點的值VBA

this thread之前的回答中,答案(在其他方面非常有用)表示points(num).value將返回該點處的值。但是,我收到了一條錯誤消息,無法在線或在VBA幫助下找到與此相對應的方法。有沒有其他人對此有過任何成功?

這裏的代碼給我找麻煩的片段:

For Count = 1 To 7 
    If Worksheets("Sheet1").ChartObjects("ChartName").Chart.SeriesCollection(1).Points(Count).Value > 1 Then 
    '... do stuff 

,因爲數據存儲在數據集中的方式,那肯定是更好地得到直接從圖表中值。我可以使用數據集本身找出解決方法,但我寧願避免這種情況。

+0

你得到了什麼錯誤信息?你能發佈一個更完整的代碼版本嗎?另外,我刪除了你的道歉;它實際上是堆棧溢出的規則,如果你有一個新的問題,你應該發佈一個新問題,而不是在現有問題中詢問,這對你來說太好了。 – LittleBobbyTables 2013-02-27 21:04:53

+0

它說「運行時錯誤438:對象不支持此屬性或方法」。看起來非常簡單......我主要想知道是否存在相同的屬性,只是名稱不同而已。代碼沒有太多,因爲我發現這確實是給我錯誤的部分。我還沒有到處去實際執行「做的東西」,但它甚至不會打開,例如,一個「msgbox」確認它已通過線路。順便說一句,在這個特定的情況下,這個點的價值確實大於1! – Joe 2013-02-27 21:39:33

回答

9
Sub Tester() 

Dim cht As Chart, s As Series, p As Point 
Dim vals, x As Integer 

    Set cht = ActiveSheet.ChartObjects(1).Chart 
    Set s = cht.SeriesCollection(1) 

    vals = s.Values 

    For x = LBound(vals) To UBound(vals) 
     If vals(x) > 10 Then 
     With s.Points(x) 
      .MarkerBackgroundColor = RGB(255, 0, 0) 
      .MarkerForegroundColor = RGB(255, 0, 0) 
     End With 
     End If 
    Next x 

End Sub 
+0

這太神奇了,非常感謝!我已經適應了我需要它做的事情(閱讀:複雜和污染它);我現在無法理解的是爲什麼它正在做我除了我的圖表之外的所有需求。如果您想查看,我已在http://pastebin.com/yTqEnw01上發佈我的代碼。基本上,它是正確的顏色編碼每個圖表,但圖表「2」總是綠色;顏色永遠不會改變。 – Joe 2013-02-28 16:12:37

+0

很難說沒有看到整個工作簿:沒有看到任何明顯的問題與您的代碼。 – 2013-02-28 17:13:34

+0

我認爲它最終成爲Excel無法識別圖表標題的問題。也就是說,我將圖表命名爲「1」,「2」,「3」等,以便我可以遍歷它們,但VBA表現得好像我在談論圖表(1),而不是圖表(「 1" )。我添加了一個「案例選擇」來吐出一個實際的圖表名稱並解決了問題;也使得代碼對於比我更新手的人更容易理解。謝謝你的幫助;我會upvote,但我的聲譽得分還不夠高! – Joe 2013-02-28 18:02:42