如何用vba添加显示或删除隐藏图表的数据标签DataLabel?

在vba中DataLabel对象代表数据标签,每一个DataLabel对象对应具体的数据点(Point)的数据标签。

所有的数据点的数据标签对象组成了DataLabels集合对象。

用vba添加显示或删除隐藏图表的数据标签都可以用ApplyDataLabels方法。

ApplyDataLabels方法分别可以作用于Point对象、Series对象、Chart对象,对应的分别用于操作单个数据点的数据标签,单个系列的数据标签以及整个图表的数据标签。

ApplyDataLabels方法的语法如下:

Function ApplyDataLabels([Type As XlDataLabelsType = xlDataLabelsShowValue], [LegendKey], [AutoText], [HasLeaderLines], [ShowSeriesName], [ShowCategoryName], [ShowValue], [ShowPercentage], [ShowBubbleSize], [Separator])

具体的参数含义可以见上文的链接。

以下的代码举例说明了如何显示或隐藏单个数据点的数据标签,单个系列的数据标签以及整个图表的数据标签:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    '内嵌在工作表的图表对象
    Dim oChartObject As ChartObject
    Set oChartObject = oWK.ChartObjects(1)
    '图表对象
    Dim oChart As Chart
    Set oChart = oChartObject.Chart
    '图表系列对象
    Dim oSeries As Series
    '图表坐标轴对象
    Dim oAxis As Axis
    '图表坐标轴集合对象
    Dim oAxes As Axes
    '图表数据点对象
    Dim oPoint As Point
    '图表数据点集合对象
    Dim oPoints As Points
    With oChart
        '隐藏图表中的所有数据标签
        .ApplyDataLabels xlDataLabelsShowNone
        '第一个图表系列
        Set oSeries = .SeriesCollection(1)
        With oSeries
            .ApplyDataLabels xlDataLabelsShowLabel
            Set oPoints = .Points
            '第一个数据点
            Set oPoint = oPoints(1)
                With oPoint
                    '单独设置某个数据点的数据标签
                    .ApplyDataLabels xlDataLabelsShowValue, False, False, False, True, True, True, False, , " "
                End With
        End With
    End With
End Sub

除了可以用ApplyDataLabels方法显示或隐藏图表的数据标签以外,还可以使用HasDataLabel属性直接显示或隐藏图表的数据标签。

以下代码举例说明了如何用HasDataLabel属性显示或隐藏图表的系列或数据点的数据标签:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    '内嵌在工作表的图表对象
    Dim oChartObject As ChartObject
    Set oChartObject = oWK.ChartObjects(1)
    '图表对象
    Dim oChart As Chart
    Set oChart = oChartObject.Chart
    '图表系列对象
    Dim oSeries As Series
    '图表坐标轴对象
    Dim oAxis As Axis
    '图表坐标轴集合对象
    Dim oAxes As Axes
    '图表数据点对象
    Dim oPoint As Point
    '图表数据点集合对象
    Dim oPoints As Points
    Dim oDataLabel As DataLabel
    With oChart
        '隐藏图表中的所有数据标签
        .ApplyDataLabels xlDataLabelsShowNone
        '第一个图表系列
        Set oSeries = .SeriesCollection(1)
        With oSeries
            '显示整个系列的数据标签
            .HasDataLabels = True
            Set oPoints = .Points
            '第一个数据点
            Set oPoint = oPoints(1)
                With oPoint
                    '隐藏第一个数据点的数据标签
                    .HasDataLabel = False
                End With
        End With
    End With
End Sub
       

发表评论