使用VBA为同一图表创建两个标题

时间:2018-10-01 12:40:05

标签: excel excel-vba excel-2010 excel-charts

我有一个图表,其中已使用单元格引用创建了图表标题。 我的代码如下:

 ActiveSheet.ChartObjects("chart001").Activate
    ActiveChart.ChartTitle.Select
    Selection.Caption = "=New_pivot!$B$1:$B$3"

在这里,我有一个图表,其中包含来自数据透视表范围B1:B3的动态标题。 我想使用数据透视表引用单元格B4中的引用在图表中添加一个标题,并且还想在图表中用红色(仅B4值)涂同样的颜色。 我不确定如何解决此问题?

1 个答案:

答案 0 :(得分:0)

首先将标题设置为完整范围(B1:B4)。然后根据字符串的长度仅对需要着色的字符进行着色。

代码(针对“ ActiveSheet”执行):

Sub Test()
Dim noColorLength As Integer
Dim colorLength As Integer
Dim tr As TextFrame2
Dim r As Range

'Get the total length of the "not colored part"
For Each r In Range("B2:B4")
   noColorLength = noColorLength + Len(r.Value) + 1
Next r

'Get the length of the red part:
colorLength = Len(Range("B5").Value)


With ActiveSheet.ChartObjects("chart001").Chart.ChartTitle
    'Set the caption:
    .Caption = "=Sheet1!R1C2:R4C2"

    'Color the caption, starting char is after the 1st three cells, red part has length of the 4th cell
    .Format.TextFrame2.TextRange.Characters(noColorLength + 1, colorLength).Font.Fill.ForeColor.RGB = RGB(255, 0, 0)

End With
End Sub

注意:这正在为标题的部分上色。任何图表永远只有1个标题。作为替代方案,可以添加一个带有第二个“标题”的形状/文本框,该第二个“标题”与实际图表标题相比可以在其他地方移动/定位。