Excel:将单元格的背景颜色设置为单元格中数据的rgb值

Int*_*man 28 excel rgb vba

我有一个包含rgb值的列,例如

127,187,199
67,22,94
Run Code Online (Sandbox Code Playgroud)

在Excel中,有什么方法可以用它来设置单元格的背景颜色吗?

Gal*_*ian 50

你可以使用VBA - 就像

Range("A1:A6").Interior.Color = RGB(127,187,199)
Run Code Online (Sandbox Code Playgroud)

只需传入单元格值即可.


Oor*_*ang 18

单独设置Color属性将保证完全匹配.Excel 2003一次只能处理56种颜色.好消息是你可以将任何rgb值分配给那56个插槽(称为ColorIndexs).使用Color属性设置单元格的颜色时,这会导致Excel使用最近的"ColorIndex".示例:将单元格设置为RGB 10,20,50(或3281930)实际上会将其设置为颜色索引56,即51,51,51(或3355443).

如果您想确保获得完全匹配,则需要将ColorIndex更改为所需的RGB值,然后将Cell的ColorIndex更改为所述值.但是,您应该知道,通过更改颜色索引的值,您可以更改已在工作簿中使用该颜色的所有单元格的颜色.举一个例子,Red是ColorIndex 3.所以你制作的任何单元格Red实际上都是ColorIndex 3.如果你重新定义ColorIndex 3就是紫色,那么你的单元格确实会变成紫色,但所有其他红色单元格都是紫色的.工作簿也将变为紫色.

有几种策略可以解决这个问题.一种方法是选择尚未使用的索引,或者只选择您认为不可能使用的索引.另一种方法是更改最近的ColorIndex的RGB值,这样您的更改将是微妙的.我在下面发布的代码采用了这种方法.利用分配最近ColorIndex的知识,它将RGB值直接分配给单元格(从而产生最接近的颜色),然后将RGB值分配给该索引.

Sub Example()
    Dim lngColor As Long
    lngColor = RGB(10, 20, 50)
    With Range("A1").Interior
        .Color = lngColor
        ActiveWorkbook.Colors(.ColorIndex) = lngColor
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)