返回列表 上一主題 發帖

[發問] 圖表 chart 內趨勢線的資料點之 Top Left 座標 VBA如何取得

[發問] 圖表 chart 內趨勢線的資料點之 Top Left 座標 VBA如何取得

敬請賢達指導:
下列新加一趨勢線,資料點在 Array 內,執行畫趨勢線後如何取得個資料點的 top left 座標值?
謝謝

  ActiveChart.SeriesCollection.NewSeries.Select
        With Selection
            .Name = "=""AAAA"""
            .XValues = Array(0.12,0.13, 0.14,0.15)     'x_category
            .Values = Array(2.2,2.1,1.8,1.5)                   'y_value
            .MarkerStyle = -4142
           With Selection.Format.Line
               .Visible = msoTrue
               .ForeColor.RGB = RGB(255, 0, 0)
               .Transparency = 0
               .Weight = 3#
           End With
        End With

回復 2# GBKEE

謝謝指導
能否轉化為 相對於chartarea 或 plotarea 的 top left (也許是視窗座標吧? 不確定叫甚麼)
例如  .top = 250
           .left = 55
再感恩

TOP

本帖最後由 Scott090 於 2014-8-16 08:10 編輯

回復 2# GBKEE


    '特定資料點(0.15,1.5) 的 Top, Left 如何取得??
請參考附件, 謝謝

TOP

回復 3# Scott09
附件

Chart sample.rar (17.53 KB)

TOP

回復 6# GBKEE


    謝謝大師熱心地回應

TOP

本帖最後由 Scott090 於 2014-8-18 21:14 編輯

回復 8# GBKEE


    非常感恩大師熱情的指導
由 PlotArea 視窗直接計算資料點位置一定是非常的穩健的做法

另,有找到資料點的屬性 Points().top Points().left,其穩健性如何不得而知,大膽列出來給參考:
  1. Sub Ex2()
  2.     Dim X(), Y(), XLeft As Single, Ytop As Single, i As Integer
  3.     Dim P As PlotArea, C As Chart, S As Shapes
  4.    
  5.     Set C = ActiveSheet.ChartObjects(1).Chart  '指定圖表
  6.     X = C.SeriesCollection(1).XValues 'X軸數值
  7.     Y = C.SeriesCollection(1).Values  'Y軸數值
  8.     i = 3   '指定數值點.
  9.    
  10.     Ytop = C.SeriesCollection(1).Points(i).Top      '資料點 i 的 Top 值
  11.     XLeft = C.SeriesCollection(1).Points(i).Left    '資料點 i 的 left 值
  12.    
  13.     With C.Shapes.AddShape(msoShapeRectangle, Left:=XLeft, Top:=Ytop, Width:=100, Height:=50)
  14.         .TextFrame.Characters.Text = "附加說明1:" & Chr(10) & "X: " & X(i) & Space(5) & "Y: " & Y(i)
  15.     End With
  16.    
  17.     Range("E10").Select
  18. End Sub
複製代碼

TOP

回復 10# GBKEE

利用資料標籤來顯示其他文字,實在高明
學習了,問題也解決了
辛苦了大師

謝謝

TOP

回復 12# fei6999


    不太能了解你的意思,最好能貼一張圖說明
一般是趨勢圖做完了以後再變更屬性,用手動或VBA畫的就用VBA變更它
是否能畫圖前先關掉它,我不知道

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題