我有一些Visual Basic代码为每一行创建一个图表。它使用以下代码设置系列值:
.SeriesCollection(1).Values =“=”& Ws.Name& “!R”& CurrRow& “C3:R”& CurrRow& “C8”
我正在努力解决的是如何设置系列标签?系列标签将始终是第1行并位于相应的列中。我知道这比上面的代码简单得多,但我很难过。
感谢任何帮助。
答案 0 :(得分:1)
使用Ws.Range(“C1:H1”)。.SeriesCollection(1).ApplyDataLabels方法中的值。
答案 1 :(得分:0)
我猜你的命令是Y值,你想要这个:
.SeriesCollection(1).Name = "=" & Ws.Name & "!R" & CurrRow & "C2"
与Y值相同的行,即Y值开始前的列。
答案 2 :(得分:0)
我的第一个答案将问题解释为要求系列名称。如果你想使用数据标签的范围,那就有点棘手了。
如果您有Excel 2013,则可以直接指定范围:
With .SeriesCollection(1)
.ApplyDataLabels
With .DataLabels
.Format.TextFrame2.TextRange.InsertChartField _
msoChartFieldRange, "='" & Ws.Name & "'!R1C3:R1C8", 0
.ShowRange = True
.ShowValue = False
End With
End With
如果您有早期版本的Excel,则必须逐步浏览标签。
这会将单元格的静态文本分配给标签:
Dim iPt As Long
Dim rLabels As Range
Set rLabels = Ws.Range(Ws.Cells(1, 3), Ws.Cells(1, 8))
With .SeriesCollection(1)
.ApplyDataLabels
For iPt = 1 To .Points.Count
.Points(iPt).DataLabel.Text = rLabels.Cells(iPt).Text
Next
End With
这会将每个标签链接到相应的单元格,因此标签会反映单元格中的任何更改:
Dim iPt As Long
Dim rLabels As Range
Set rLabels = Ws.Range(Ws.Cells(1, 3), Ws.Cells(1, 8))
With .SeriesCollection(1)
.ApplyDataLabels
For iPt = 1 To .Points.Count
.Points(iPt).DataLabel.Text = "=" & rLabels.Cells(iPt).Address(, , , True)
Next
End With