将饼图段的颜色更新为单元格填充颜色

问题描述 投票:0回答:1

我正在尝试使用Excel 2016,根据数据从中绘制的单元格为饼图段着色。

我从YouTube video夹住了代码,但是很难在某些地方阅读(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

更新:这是显示图表的片段-我正在尝试更新图表段以表示第二列中的单元格填充颜色。Table & Charts

excel vba colors pie-chart
1个回答
0
投票

进行一些小的调整,效果很好:

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。>

© www.soinside.com 2019 - 2024. All rights reserved.