我有一个包含 2 个数据系列的图表,这些数据系列使用条件格式引用单元格值以确定其颜色。我在网上查找了一个 VBA 代码,用于在图表上根据单元格颜色更新系列的颜色,但是在运行代码时没有任何反应。
任何人都可以帮助我吗?
Sub CellColorsToChart()
'Updateby Extendoffice
Dim xChart As Chart
Dim I As Long, J As Long
Dim xRowsOrCols As Long, xSCount As Long
Dim xRg As Range, xCell As Range
On Error Resume Next
Set xChart = ActiveSheet.ChartObjects("Chart 2").Chart
If xChart Is Nothing Then Exit Sub
xSCount = xChart.SeriesCollection.Count
For I = 1 To xSCount
J = 1
With xChart.SeriesCollection(I)
Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(2), "!")(1))
If xSCount > 4 Then
xRowsOrCols = xRg.Columns.Count
Else
xRowsOrCols = xRg.Rows.Count
End If
For Each xCell In xRg
.Points(J).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
.Points(J).Format.Line.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
J = J + 1
Next
End With
Next
End Sub
xCell.Interior
引用单元格应用的颜色,而不是条件格式。
如果您使用的是 Excel 2010+,那么您应该使用.DisplayFormat
来获取条件格式颜色。
另外,为什么要使用ThisWorkbook.Colors
and ColorIndex
,只需参考颜色:
.Points(J).Format.Fill.ForeColor.RGB = xCell.DisplayFormat.Interior.Color
此外,在您设置On Error Resume Next
在 上捕获错误后Set xChart =
,您必须重置错误处理
On Error Resume Next
Set xChart = ActiveSheet.ChartObjects("Chart 2").Chart
On Error GoTo 0 ' <~~ reset error handling
If xChart Is Nothing Then Exit Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句