Datalabels VBA Excel

时间:2018-01-25 19:38:56

标签: excel excel-vba charts label vba

我希望有人可以帮我处理Excel VBA数据标签查询。

在Excel 2016中,我想基于一系列单元格(而不是值)将数据标签添加到折线图中。范围是表格列。

由于某种原因,宏运行没有错误,但数据标签不显示,因为范围没有捕获,即一旦运行,数据标签的选定范围保持空白。

请注意我在相关部分下方粘贴了复印件。完整代码中还有更多系列集合。不过,我只是为特定的标签添加标签。

谢谢,Ant

Dim created_table_object As ListObject
Dim created_table As String
Set created_table_object = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$26"), , xlNo)
created_table = created_table_object.Name

Dim waterfall_chart As Chart
Set waterfall_chart = ActiveSheet.Shapes.AddChart2(XlChartType:=xlColumnStacked).Chart

With waterfall_chart
    With .FullSeriesCollection(7)
        .Name = "Positive Data Labels"
        .Values = ActiveSheet.ListObjects(created_table).ListColumns(11).DataBodyRange
        .ChartType = xlLine
        .Format.Line.Visible = msoFalse
        .HasDataLabels = True
        With .DataLabels
            .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, "ActiveSheet.ListObjects(created_table).ListColumns(12).DataBodyRange", 0
            .Format.TextFrame2.TextRange.Font.Size = 12
            .Format.TextFrame2.TextRange.Font.Bold = msoTrue
            .ShowRange = True
            .ShowValue = False
            .NumberFormat = number_format
            .Position = xlLabelPositionAbove
        End With
    End With
End With

1 个答案:

答案 0 :(得分:0)

据我所知,您需要一个字符串公式,其中包含.Format.TextFrame2.TextRange.InsertChartField行的单元格地址。也许试试:

.Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, _
    "='" & ActiveSheet.Name & "'!" & _
    ActiveSheet.ListObjects(created_table).ListColumns(12).DataBodyRange.Address, 0

"='" & ActiveSheet.Name & "'!"获取带有所需等号的范围字符串地址所需的工作表名称,因为需要使用公式。

您还可以声明一个字符串变量,然后在格式化行中使用它来帮助代码读取更清晰:

    Mystr = "='" & ActiveSheet.Name & "'!" & ActiveSheet.ListObjects(created_table).ListColumns(12).DataBodyRange.Address 

   .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, Mystr, 0