VBA: серия раскрасок с "Выбрать дело"
Я довольно новичок в VBA, поэтому некоторая помощь по этому вопросу высоко ценится.:) Как показывает заголовок вопроса, я старался придать каждой серии в своем цвете разные цвета. То, что я получил до сих пор, работает хорошо, но с небольшим ограничением. Имена серий меняются иногда, поэтому вместо того, чтобы менять код каждый раз, я бы хотел, чтобы Excel вынул имя прямо из ячейки. Например, вместо того, чтобы писать "dormakaba" вручную, значение записывается в ячейку рабочего листа "A2". Было бы здорово, если у кого-то есть решение.
Sub Color()
Dim iSrs As Long, nSrs As Long
If ActiveChart Is Nothing Then
MsgBox "No chart selected. Please try again.", vbExclamation, "No Active Chart"
Else
With ActiveChart
nSrs = .SeriesCollection.Count
For iSrs = 1 To nSrs
' only format series whose names are found
Select Case LCase$(.SeriesCollection(iSrs).Name)
Case "dormakaba" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(255, 130, 171)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Case "georg fischer" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(155, 48, 255)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Case "clariant" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(0, 255, 0)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Case "givaudan" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(202, 225, 255)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Case "galencia" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(67, 205, 128)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Case "lonza" '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(238, 230, 133)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
End Select
Next
End With
End If
End Sub
1 ответ
Решение
Изменить "Дормакаба" с Range("A2")
в вашем коде:
Select Case LCase$(.SeriesCollection(iSrs).Name)
Case LCase$(Range("A2")) '******CHANGE HERE******
.SeriesCollection(iSrs).Format.Fill.ForeColor.RGB = RGB(255, 130, 171)
.SeriesCollection(iSrs).Format.Line.Visible = True
.SeriesCollection(iSrs).Format.Line.Visible = False
Поскольку вы избегаете дела, тогда LCase$(Range("A2"))
было бы еще лучше.