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")) было бы еще лучше.

Другие вопросы по тегам