从图表中获取VBA变量的值

时间:2014-05-09 09:21:26

标签: excel-vba vba excel

我正在尝试仅使用VBA将数据标签添加到饼图的最大部分。

当我尝试运行以下代码时,我收到一条错误消息:     '对象不支持方法'

的这个属性

错误引用该行:

sem = ActiveSheet.ChartObjects("REJT").Chart.SeriesCollection(1).Points(x).Value

有谁能告诉我这条线的问题是什么? 是否有另一种获取图表数据点值的方法?

Dim krb As Long
Dim x As Long
Dim rr As Long
Dim sem As Long
Dim xmax As Long

Set pts = ActiveSheet.ChartObjects("REJT").Chart.SeriesCollection(1).Points
krb = pts.Count
x = 1
rr = 0

'While loop to find largest part of pie chart
While x < (krb + 1)
sem = ActiveSheet.ChartObjects("REJT").Chart.SeriesCollection(1).Points(x).Value
MsgBox (sem)
If sem > rr Then
rr = sem
xmax = x
End If

x = x + 1
Wend

'Add data label to the largest part of pie chart
ActiveSheet.ChartObjects("REJT").Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Points(xmax).Select
ActiveChart.SeriesCollection(1).Points(xmax).ApplyDataLabels  

1 个答案:

答案 0 :(得分:1)

以下是从饼图中获取最大点值并将数据标签应用于其位置的一种方法:

Sub pieChartMaxDataLabel()
    Dim cht As Chart
    Set cht = ActiveChart

    maxValue = WorksheetFunction.Max(cht.SeriesCollection(1).Values)
    maxPosition = WorksheetFunction.Match(maxValue, cht.SeriesCollection(1).Values, 0)
    cht.SeriesCollection(1).Points(maxPosition).ApplyDataLabels

    Debug.Print "Max Value is: "; maxValue; " At Position: "; maxPosition
End Sub

使用如下所示的图表值进行测试:

enter image description here

结果:

enter image description here

enter image description here