VBA: ввод цвета RGB с использованием массива - PullRequest
0 голосов
/ 17 января 2019

Я хочу раскрасить диаграмму на основе ввода массива.Это выглядит примерно так:

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 - целые числа.При запуске моего саба я получаю ошибку несоответствия типов.Я предполагаю, что не могу ввести значение ячейки, так как же вместо этого основать цвета на массиве?Для первой итерации RGB_1 = "RGB (229,35,49)" (используя список наблюдения в VBA).

1 Ответ

0 голосов
/ 17 января 2019

Я бы установил цвета фона ячейки, а затем прочитал их непосредственно, чтобы установить цвета графика:

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