[英]Excel VBA - Reference chart data point by name instead of index number
[英]How to reference "active/selected" chart data point in Excel using VBA
我正在尋找一種使用 VBA 在 Excel 中引用活動/選定圖表數據點的方法。
想象一下,我有一個折線圖,我想向其中添加一個誤差條。 但是,我不想在整個系列中添加誤差線,而只想添加到一個選定的點。 請參閱下面的屏幕:
我知道如何在 Excel 中做到這一點,有多種方法,例如,添加一個新的單點系列,然后添加一個錯誤欄。 還有其他方法。 我遇到的問題是如何引用活動/選定的數據點。
如果我選擇創建一個新的單點系列,我需要知道點數才能做到這一點。 我知道(我使用過它)您可以使用 Points 對象/方法來引用點。 遺憾的是,我不知道如何提取選定的點編號、坐標等,以便稍后在我的項目中使用它。
我無法添加任何代碼,因為我所做的一切都是格式化和使用誤差條,以及遍歷現有的所有數據點(在這種情況下代碼沒有用)。 我正在尋找的是選定的點信息,因此我可以將其稱為 .Point(x) ,其中 x 是我之前提取的點號,而不會像 .Point(8) 那樣被迫立即參考點號(我願意不知道具體的數字,因為我只是點擊了它)。
我已經看到了使用圖表事件提取它的方法,但這對於我在我的小簡單項目中想要做的事情來說是一種矯枉過正(尤其是如何在類模塊之外引用其他宏中的“提取”點)。
有任何想法嗎? 非常感謝所有幫助,因為我在 3 天試圖找到引用它的方法后迷路了。
要獲取索引,您可以解析點的Name
,其格式為:
S<series number>P<point number>
Sub Test()
If TypeOf Selection Is Point Then
Dim p as Point
Set p = Selection
Debug.Print CLng(Split(p.Name, "P")(1)) ' this is p's index
End If
End Sub
要獲得有關該點的更多信息,例如 x 和 y 值,也許您可以執行以下操作:
Sub Test()
If TypeOf Selection Is Point Then
Dim p As Point
Set p = Selection
Dim i As Long
i = CLng(Split(p.Name, "P")(1))
Dim s As Series
Set s = p.Parent
Debug.Print s.Values(i) ' Values is a one-based array so you can use the point index to get its corresponding value
Debug.Print s.XValues(i)
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.