VBA代码仅应用最后一个数据标签

时间:2017-05-03 17:48:02

标签: excel vba excel-vba graph

我不会说英语,但我希望你能理解我。

它是关于用于绘制图形的VBA代码。我正在尝试自动化我的工作表,我在互联网上找到了一个简单易用的代码。更新系列后,我的目的是清除除最后一个之外的所有数据标签。

代码是:

Dim oChart As ChartObject
Dim MySeries As Series

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

    'Clear Existing Data Labels
       MySeries.ApplyDataLabels (xlDataLabelsShowNone)

    'Apply Labels to Last Point
        MySeries.points(MySeries.points.Count).ApplyDataLabels

    Next MySeries
Next oChart

End Sub

但是,此代码仅针对十个图中的三个运行,而不适用于其他图。我已经找到了系列之间的相似之处或不同之处(比如名称格式或图形的类型 - 线条,条形图,饼图),但我找不到问题

宏的第一部分是删除所有数据标签,但所有图表都能正常工作。我也尝试为多张工作表和工作簿执行此操作,但也未成功。

1 个答案:

答案 0 :(得分:0)

你应该超过每张纸,每张图表,每个系列和点。 ApplyDataLabels是一个属性,不是一个点或多个点。 xlDataLabelsShowNone并不代表任何一点。这意味着标签不会以任何格式显示。您可以阅读此对象here

下面的代码可以帮到你。

Sub remove_label()

    Dim wsh As Worksheet
    Dim oChart As ChartObject
    Dim MySeries As Series
    Dim oPoints As Points
    Dim MyPoint As Point
    Dim i As Long

     For Each wsh In ThisWorkbook.Worksheets
       For Each oChart In wsh.ChartObjects
         For Each MySeries In oChart.Chart.SeriesCollection
           Set oPoints = MySeries.Points
             i = oPoints.Count
                For Each MyPoint In oPoints
                  i = i - 1
                    If i <> 0 Then
                     'Clear Existing Data Labels
                      MyPoint.ApplyDataLabels xlDataLabelsShowNone
                    Else
                     'Apply Labels to Last Point
                      MyPoint.ApplyDataLabels xlDataLabelsShowValue
                    End If

           Next MyPoint
         Next MySeries
       Next oChart
     Next wsh

End Sub