2017-11-10 171 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()'部分更感困扰 - 那是干什么的?对我来说,似乎里面的论据应该足够了。 –