动态图表系列标签

时间:2010-05-24 20:31:16

标签: excel vba excel-vba charts

我有一些Visual Basic代码为每一行创建一个图表。它使用以下代码设置系列值:

.SeriesCollection(1).Values =“=”& Ws.Name& “!R”& CurrRow& “C3:R”& CurrRow& “C8”

我正在努力解决的是如何设置系列标签?系列标签将始终是第1行并位于相应的列中。我知道这比上面的代码简单得多,但我很难过。

感谢任何帮助。

3 个答案:

答案 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