我希望有人可以帮我处理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
答案 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