Excel VBA:带“的彩色图表系列”;选择Case";

Excel VBA:带“的彩色图表系列”;选择Case";,excel,vba,charts,series,select-case,Excel,Vba,Charts,Series,Select Case,我是VBA新手,因此非常感谢您在这方面提供的帮助。:) 正如问题标题所示,我试图给图表中的每一个系列赋予不同的颜色。到目前为止,我得到的效果很好,但有一个小的限制。该系列的名称有时会更改,因此我希望excel将名称直接从单元格中删除,而不是每次都更改代码。例如,不是手动写入“dormakaba”,而是将值写入工作表单元格“A2”。 如果有人能找到解决方案,那就太好了 Sub Color() Dim iSrs As Long, nSrs As Long If ActiveChart Is No

我是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
用代码中的
范围(“A2”)
更改“dormakaba”:

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”)
就更好了。

为什么要使用VBA?以正常(交互)方式更改系列图表的颜色不是更容易吗?您可以在Excel中创建自己的托盘,这样图表也会自动显示这些颜色。。。