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