VBA:使用系列和堆积区域在组合图中自动选择系列最后数据点标签

时间:2017-07-12 16:01:00

标签: vba excel-vba excel

我想将最后一点数据标签添加到某些选定的系列中。我有一个组合数字" line" "堆积区域"。我想只显示" line"的最后一个点数据标签。系列,但不是"堆积区域",如何在VBA中执行此操作?

我已经能够构建一个按钮单击宏来生成数据标签,但它会为所有系列生成数据标签(我不希望它为"堆积区域")。请参阅下面的代码。有人可以赐教我怎么办吗?我循环浏览图表的原因是因为我有两个图表。使用可能更新的名称范围绘制时间序列。

任何有用的评论都非常感谢!如果您需要进一步说明,我可以提供我的excel文件(它似乎没有给我选择在这里附上它)。

感谢。

 Sub LastDataLables()

     Dim oChart As ChartObject
     Dim MySeries As Series

     For Each oChart In ActiveSheet.ChartObjects
       For Each MySeries In oChart.Chart.SeriesCollection

           'Clear ExistingData Labels
            MySeries.ApplyDataLabels (xlDataLabelsShowNone)

            MySeries.Points(MySeries.Points.Count - 1).ApplyDataLabels

         With MySeries.DataLabels
           .Font.Size = 12
          '.Position = xlLabelPositionRight   
           .NumberFormat = "0.00%"
         End With

       Next MySeries
      Next oChart
 End Sub

1 个答案:

答案 0 :(得分:1)

要实现此目的,请添加If条件以检查If MySeries.Type = xlLine Then

完整代码

Option Explicit

Sub LastDataLables()

Dim oChart As ChartObject
Dim MySeries As Series

For Each oChart In ActiveSheet.ChartObjects
    For Each MySeries In oChart.Chart.SeriesCollection

        If MySeries.Type = xlLine Then ' <-- check if series type is xlline
            'Clear ExistingData Labels
            MySeries.ApplyDataLabels (xlDataLabelsShowNone)
            MySeries.Points(MySeries.Points.Count - 1).ApplyDataLabels

            With MySeries.DataLabels
                .Font.Size = 12
                '.Position = xlLabelPositionRight
                .NumberFormat = "0.00%"
            End With
        End If
    Next MySeries
Next oChart

End Sub