我正在尝试让饼图根据使用Excel 2016绘制数据的单元格来更改颜色。
我从youtube vid https://www.youtube.com/watch?v=tm0j4dstJiI夹住了代码,但是很难在某些地方阅读(1,l和i很难区分!)因此我不敢相信我说对了!
我有此代码,但是它不起作用-有人可以告诉我我的编码方式的错误吗?
Private Sub SheetActivate(ByVal Sh As Object)
Dim cht As ChartObject
Dim i As Integer
Dim vntValues As Variant
Dim s As String
Dim mySeries As Series
For Each cht In ActiveSheet.ChartObjects
For Each mySeries In cht.Chart.SeriesCollection
If mySeries.ChartType <> xlPie Then GoTo SkipNotPie
s = Split(mySeries.Formula, ",")(2)
vntValues = mySeries.Values
For i = 1 To UBound(vntValues)
mySeries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
Next l
SkipNotPie:
Next mySeries
Next cht
End Sub
任何帮助,我会提供一些数字饼图每季度更新一次,不胜感激。
谢谢!
进行一些小的调整,效果很好:
Private Sub SheetActivate()
Dim cht As ChartObject
Dim i As Long
Dim vntValues As Variant
Dim s As String
Dim mySeries As Series
For Each cht In ActiveSheet.ChartObjects
For Each mySeries In cht.Chart.SeriesCollection
If mySeries.ChartType <> xlPie Then GoTo SkipNotPie
s = Split(mySeries.Formula, ",")(2)
vntValues = mySeries.Values
For i = 1 To UBound(vntValues)
mySeries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
Next i
SkipNotPie:
Next mySeries
Next cht
End Sub
请确保模块顶部没有Option Base 1
。如果您这样做,则更改
s = Split(mySeries.Formula, ",")(2)
to
s = Split(mySeries.Formula, ",")(3)
自从我学会了从零开始计数以来,我就没有使用过Option Base 1
。>