Я строю лист диаграммы с легендой и несколькими сериями. Требуется, чтобы над диаграммой отображался текст, содержащий названия и цвета серии. Так что в основном как легенда, но с некоторыми рассчитанными значениями, которые являются дополнительнымиМне удалось поместить названия серий в одно текстовое поле, но я не могу покрасить их по отдельности.
У вас есть идеи, как я могу это сделать?
Это текстовое поле:
Dim ChartSheet1 As Chart
Set ChartSheet1 = Charts.Add(After:=Sheets(Sheets.Count))
with chartSheet1
Dim myTextBox As TextBox
Set myTextBox = .TextBoxes.Add(30, 60, 550, 100)
Вот как я помещаю названия серии в текстовое поле.
myTextBox.Text = myTextBox.Text & vbNewLine & .FullSeriesCollection(x).Name
Здесь яЯ устанавливаю цвета для серии:
Dim color(1 To 10) As Long
color(1) = RGB(95, 95, 95)
color(2) = RGB(51, 51, 153)
color(3) = RGB(150, 150, 150)
color(4) = RGB(51, 102, 255)
color(5) = RGB(192, 192, 192)
color(6) = RGB(133, 163, 255)
color(7) = RGB(213, 213, 213)
color(8) = RGB(173, 194, 255)
color(9) = RGB(234, 234, 234)
color(10) = RGB(214, 224, 255)
Select Case Int(countSeries / 2)
Case 1 To 4
For k = 1 To countSeries
''For l = 2 To countSeries - 1
'' Debug.Print k
.FullSeriesCollection(k).Format.Line.ForeColor.RGB = color(k + 1)
''Debug.Print .FullSeriesCollection(k).Format.Line.ForeColor.RGB
''myTextBox.Text = .FullSeriesCollection(k).Name & vbNewLine
' myTextBox.Font.color = color(k)
If k + 1 < countSeries Then
.FullSeriesCollection(k + 1).Format.Line.ForeColor.RGB = color(k + 2)
'myTextBox.Font.color = color(k + 1)
End If
''Next l
Next k
Case 5 To 20
For k = 1 To countSeries
''For l = 1 To countSeries - 1
'And l + 2 < 10 Then
.FullSeriesCollection(k).Format.Line.ForeColor.RGB = color(k)
If k + 1 < 10 Then
.FullSeriesCollection(k + 1).Format.Line.ForeColor.RGB = color(k + 1)
End If
''Next l
Next k
Case Else ' Other values.
Debug.Print "Not between 1 and 20"
End Select
Редактировать: у меня нет текстового поля UserForm, я использую простое текстовое поле из фигур: Каждый символ в TextBox различного цвета в VBA Excel
Могу ли я использовать текстовое поле UserForm для моего сценария? Поскольку я не хочу подсказку, просто простой текст в верхней части графика.
Я добавил код для создания текстового поля.