Excel VBA:带“的彩色图表系列”;选择Case";
我是VBA新手,因此非常感谢您在这方面提供的帮助。:) 正如问题标题所示,我试图给图表中的每一个系列赋予不同的颜色。到目前为止,我得到的效果很好,但有一个小的限制。该系列的名称有时会更改,因此我希望excel将名称直接从单元格中删除,而不是每次都更改代码。例如,不是手动写入“dormakaba”,而是将值写入工作表单元格“A2”。 如果有人能找到解决方案,那就太好了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
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中创建自己的托盘,这样图表也会自动显示这些颜色。。。