VBA: 使用数组输入 RGB 颜色
VBA: Entering an RGB color using an array
我想根据数组输入为图表着色。
它是这样的:
Public RGB_1 As Variant
Public cht As ChartObject
Public i As Integer
Public Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Main")
RGB_1 = Ws.Range(Cells(x, y), Cells(z, y)) ' x,y,z defined elsewhere
' Changing colors
With ws
i = 0
For Each cht In .ChartObjects
cht.Activate
ActiveChart.FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB_1(i + 1, 1) ' Color from RGB Array in the main sheet
i = i + 1
Next cht
End with
图表可以有1种或2种不同的颜色,这里我只以1种为例。 RGB 数组指的是包含 "RGB(xxx, yyy, zzz)" 的单元格,其中 xxx、yyy、zzz 是整数。
当 运行 我的 sub 我收到类型不匹配错误。我假设我无法输入单元格值,那么我该如何改为将颜色基于数组?
对于第一次迭代 RGB_1 = "RGB(229,35,49)"(使用 VBA 中的监视列表)。
我会设置单元格背景颜色,然后直接读取这些颜色以设置绘图颜色:
Public rngColors As Range
Public cht As ChartObject
Public i As Long
Public Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Main")
With ws
'note: fully-reference all Range/Cells
Set rngColors = .Range(.Cells(x, y), .Cells(z, y)) ' x,y,z defined elsewhere
For Each cht In .ChartObjects
i = 1
cht.Chart.FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = _
rngColors.Cells(i).Interior.Color
i = i + 1
Next cht
End with
我想根据数组输入为图表着色。 它是这样的:
Public RGB_1 As Variant
Public cht As ChartObject
Public i As Integer
Public Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Main")
RGB_1 = Ws.Range(Cells(x, y), Cells(z, y)) ' x,y,z defined elsewhere
' Changing colors
With ws
i = 0
For Each cht In .ChartObjects
cht.Activate
ActiveChart.FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB_1(i + 1, 1) ' Color from RGB Array in the main sheet
i = i + 1
Next cht
End with
图表可以有1种或2种不同的颜色,这里我只以1种为例。 RGB 数组指的是包含 "RGB(xxx, yyy, zzz)" 的单元格,其中 xxx、yyy、zzz 是整数。 当 运行 我的 sub 我收到类型不匹配错误。我假设我无法输入单元格值,那么我该如何改为将颜色基于数组? 对于第一次迭代 RGB_1 = "RGB(229,35,49)"(使用 VBA 中的监视列表)。
我会设置单元格背景颜色,然后直接读取这些颜色以设置绘图颜色:
Public rngColors As Range
Public cht As ChartObject
Public i As Long
Public Ws As Worksheet
Set Ws = ThisWorkbook.Sheets("Main")
With ws
'note: fully-reference all Range/Cells
Set rngColors = .Range(.Cells(x, y), .Cells(z, y)) ' x,y,z defined elsewhere
For Each cht In .ChartObjects
i = 1
cht.Chart.FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = _
rngColors.Cells(i).Interior.Color
i = i + 1
Next cht
End with