我之所以尝试这样做的背景故事是因为我需要在局部最大值的峰值处放置标注标签,但值必须是 x 值而不是 y 值。
我尝试过以多种方式执行此操作,最近一次是这样的:
Dim c As Chart
Set c = sht.Shapes.AddChart.Chart
With c
.ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection(8).Name = "Data Labels"
.SeriesCollection(8).XValues = Range(sht.Cells(start, 2), sht.Cells(ender, 2))
.SeriesCollection(8).Values = Range(sht.Cells(start, 9), sht.Cells(ender, 9))
.SeriesCollection(8).Format.Line.Visible = msoFalse
End With
For i = 1 To c.SeriesCollection(8).Points.count
c.SeriesCollection(8).Points(i).HasDataLabel = True
c.SeriesCollection(8).Points(i).DataLabel.Position = xlLabelPositionAbove
c.SeriesCollection(8).Points(i).DataLabel.Format.AutoShapeType = msoShapeRectangularCallout
c.SeriesCollection(8).Points(i).DataLabel.Format.Line.Visible = msoTrue
error--->c.SeriesCollection(8).Points(i).DataLabel.Text = c.SeriesCollection(8).XValues.Cells(i, 1)
Next i
这将返回错误“需要对象”
我也试过
c.SeriesCollection(8).Points(i).DataLabel.Text = c.SeriesCollection(8).XValues(i)
c.SeriesCollection(8).Points(i).DataLabel.Text = c.SeriesCollection(8).XValues(i).value
还有一些我很可能忘记了。
我真正想要和需要的是检索位于 c.SeriesCollection(8).XValues 的“i”位置的值
谢谢你的帮助。
XValues 返回一个 Variant 数组(不是范围),但由于某种原因,这会引发错误:
Debug.Print ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues(1)
运行时错误“451”:未定义属性让过程且属性获取过程未返回对象
而这工作得很好:
Sub Tester()
Dim v, i
v = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues
For i = LBound(v) To UBound(v)
Debug.Print "Point#" & i, v(i)
Next i
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句