2017-11-10 177 views
0

我正在嘗試使用特定工作表上活動單元格的單元格顏色創建圖表。當使用下面提供的宏時,我發現只有一部分分配的RGB顏色代碼與圖表匹配。我不確定爲什麼有些顏色會匹配,有些則不會。手動輸入顏色代碼時,圖表中會顯示正確的顏色。有沒有我離開這個宏或我需要採取額外的步驟?顏色圖表列按單元格顏色錯誤

我在這個項目中使用Excel 2016。

Sub ColorChartColumnsbyCellColor() 
With Sheets("Sheet1").ChartObjects(1).Chart.SeriesCollection(1) 
Set vAddress = ActiveSheet.Range(Split(Split(.Formula, ",")(1), "!")(1)) 
For i = 1 To vAddress.Cells.Count 
.Points(i).Format.Fill.ForeColor.RGB = 
ThisWorkbook.Colors(vAddress.Cells(i).Interior.ColorIndex) 
Next i 
End With 
End Sub 
+0

您的問題來源於此行'設置將Vaddress = ActiveSheet.Range(斯普利特(斯普利特(.Formula, 「」)( 1),「!」)(1))'。不幸的是,我不知道你想用這個嵌套分割做什麼,所以我不知道如何幫助你。嘗試「斷言」該行,看看你是否得到預期的結果。 –

+1

如果您試圖從工作表中選取的任何顏色來自條件格式化,那麼您需要查看'DisplayFormat.Interior.Color'這些顏色不會反映在'Cells(i).Interior.ColorIndex ' - 這將返回單元格的「基本/靜止」顏色,而不應用任何CF更改 –

回答

2

您正在爲RGB屬性指定顏色索引。顏色索引與紅綠藍無關。此外,@Tim William's有一個觀點:有條件的格式可能在你正在做的事情中扮演一個角色。

試試這個代碼,它的顏色屬性分配給RGB屬性:

Sub ColorChartColumnsbyCellColor() 
    With Sheets("Sheet1").ChartObjects(1).Chart.SeriesCollection(1) 
     Set vAddress = ActiveSheet.Range(Split(Split(.Formula, ",")(1), "!")(1)) 

     For i = 1 To vAddress.Cells.Count 
      'Comment the line below and uncomment the next one to take conditional formatting into account. 
      .Points(i).Format.Fill.ForeColor.RGB = vAddress.Cells(i).Interior.Color 
      '.Points(i).Format.Fill.ForeColor.RGB = vAddress.Cells(i).DisplayFormat.Interior.Color 
     Next i 
    End With 
End Sub 
+0

不應使用「.Points(i).Interior.Color = vaddress.Cells(i).Interior.Color」 For循環? –

+0

編譯和工作時,Intellisense不會爲'Point'類挑選'.Interior'。我認爲它已被棄用。 – Excelosaurus

+0

我實際上對'thisworkbook.colors()'部分更感困擾 - 那是幹什麼的?對我來說,似乎裏面的論據應該足夠了。 –