【发布时间】: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