【问题标题】:VBA: Coloring chart series with "Select Case"VBA:带有“选择案例”的着色图表系列
【发布时间】:2019-01-14 06:34:59
【问题描述】:

我对 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

【问题讨论】:

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

标签: excel vba charts series select-case


【解决方案1】:

在您的代码中使用Range("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")) 会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2015-12-10
    • 2022-06-22
    • 2012-02-29
    • 2010-12-22
    相关资源
    最近更新 更多