Создание двух заголовков для одного и того же графика с использованием VBA - PullRequest
0 голосов
/ 01 октября 2018

У меня есть диаграмма, в которой я создал заголовок диаграммы, используя ссылку на ячейку.Мой код приведен ниже:

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

Здесь у меня есть диаграмма с динамическим заголовком из диапазона сводной таблицы B1: B3.Я хочу добавить еще один заголовок на диаграмму, используя ссылку из ячейки ссылки сводной таблицы B4, а также хочу закрасить ее красным цветом на диаграмме (только значение B4).Я не уверен, как решить эту проблему?

1 Ответ

0 голосов
/ 02 октября 2018

Сначала установите заголовок на полный диапазон (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 заголовок.В качестве альтернативы можно добавить форму / текстовое поле со вторым «заголовком», который можно перемещать / размещать в другом месте по сравнению с фактическим заголовком диаграммы.

...