VBA:使用数组输入RGB颜色

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

我想根据数组输入为图表着色。它是这样的:

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中的监视列表)。

excel vba rgb
1个回答
0
投票

我会设置单元格背景颜色,然后直接读取它们来设置绘图颜色:

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
© www.soinside.com 2019 - 2024. All rights reserved.