2010-05-24 48 views
0

我有一些Visual Basic代码为每一行创建一个图表。动态图表系列标签

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

它使用这个代码设置一系列值

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

任何帮助表示赞赏。

回答

1

在.SeriesCollection(1).ApplyDataLabels方法中使用Ws.Range(“C1:H1”)。值。

+0

这些都是数据标签,而不是系列名称。 – 2015-08-17 14:54:32

+0

是的,这是OP实际要求的。 – 2015-08-18 15:07:10

+0

直到Excel 2013才能使用数据标签范围;在他发布之后,OP不可能在2010年以后使用任何版本。即使在Excel 2013中,您也无法在ApplyDataLabels方法中分配范围,您必须在另一步中添加该范围。在早期版本中,您需要独立填充每个标签的文本。 – 2015-08-22 15:25:01

0

我从你的Y值命令猜测,你想这样:

.SeriesCollection(1).Name = "=" & Ws.Name & "!R" & CurrRow & "C2" 

这是同一行的Y值,列前的Y值开始。

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