最初我写了一个函数,它根据预定义的颜色主题改变一系列饼图的外观
Function GetColorScheme(i As Long) As String
Const thmColor1 As String = "C:\Program Files\Microsoft Office\Document Themes 14\Theme Colors\Blue Green.xml"
Const thmColor2 As String = "C:\Program Files\Microsoft Office\Document Themes 14\Theme Colors\Orange Red.xml"
Select Case i Mod 2
Case 0
GetColorScheme = thmColor1
Case 1
GetColorScheme = thmColor2
End Select
End Function
但是,路径不是恒定的,我想通过 rgb 颜色单独定义每个饼图切片。我在上一个主题(如何使用 VBA 为饼图着色)中的 stackoverflow 上找到了一种更改饼图每个切片颜色的方法
但我不知道如何将代码实现到上面提到的函数中。我可以写吗
Function GetColorScheme(i As Long) As String
Select Case i Mod 2
Case 0
Dim clr As Long, x As Long
For x = 1 To 3
clr = RGB(0, x * 8, 0)
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(x)
.Format.Fill.ForeColor.RGB = clr
End With
Next x
Case 1
Dim clr As Long, x As Long
For x = 1 To 3
clr = RGB(0, x * 8, 0)
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points(x)
.Format.Fill.ForeColor.RGB = clr
End With
Next x
End Select
End Function
该函数链接到脚本的主要部分(即)
For Each rngRow In Range("PieChartValues").Rows
chtMarker.SeriesCollection(1).Values = rngRow
ThisWorkbook.Theme.ThemeColorScheme.Load GetColorScheme(thmColor)
chtMarker.Parent.CopyPicture xlScreen, xlPicture
lngPointIndex = lngPointIndex + 1
chtMain.SeriesCollection(1).Points(lngPointIndex).Paste
thmColor = thmColor + 1
哪里行
ThisWorkbook.Theme.ThemeColorScheme.Load GetColorScheme(thmColor)
获取函数的值(参见代码的第一位 - 原始函数)但现在我不再定义 thmColor 变量并且不知道如何最好地将代码实现到函数部分