尼尔在工作表中经常使用颜色。他知道自己可以根据RGB数字值生成颜色(如其他_ExcelTips_问题中所述)。 Neil想要做相反的事情-确定RGB值。他想知道是否有一种返回方法(通过函数或宏)

用于填充单元格的颜色的RGB值。

Excel不包含执行此操作的函数,但是您可以创建自己的用户定义函数。您使用的功能取决于实际要返回到工作表的内容。例如,如果要返回传统的六字符十六进制代码来表示RGB颜色,则可以使用以下非常简单的宏:

Function getRGB1(rcell) As String     Dim sColor As String

sColor = Right("000000" & Hex(rcell.Interior.Color), 6)

getRGB1 = Right(sColor, 2) & Mid(sColor, 3, 2) & Left(sColor, 2)

End Function

此宏查看您引用的任何单元格的内部颜色,以正确的顺序放置颜色的十六进制值,然后将字符串返回给Excel。要使用该函数,您只需在工作表中使用以这种方式引用的单元格来调用它:

=getRGB1(B4)

但是,您可能不希望将传统的十六进制代码用于RGB颜色。

如果要获取每种颜色的十进制值,则以下宏将返回:

Function getRGB2(rcell) As String     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256     getRGB2 = "R=" & R & ", G=" & G & ", B=" & B End Function

此版本以与getRGB1宏相同的方式调用,该版本返回字符串,例如“ R = 255,G = 204,B = 0”。您还可以根据设置的参数进一步修改宏,使其返回单个值:

Function getRGB3(rcell As Range, Optional opt As Integer) As Long     Dim C As Long     Dim R As Long     Dim G As Long     Dim B As Long

C = rcell.Interior.Color     R = C Mod 256     G = C \ 256 Mod 256     B = C \ 65536 Mod 256

If opt = 1 Then         getRGB3 = R     ElseIf opt = 2 Then         getRGB3 = G     ElseIf opt = 3 Then         getRGB3 = B     Else         getRGB3 = C     End If End Function

要使用该宏,只需在工作表中使用的函数中添加第二个参数,指定所需的内容:

=getRGB3(B4,1)

如果第二个参数为1,则该函数仅返回红色值。如果将第二个参数指定为2,则返回绿色值,而3返回蓝色值。第二个参数的任何其他值(或者如果完全省略),将返回内部颜色的完整十进制值。

如果您不想采用创建宏的方法,或者不只是要在Excel工作表中确定颜色,则可以考虑使用第三方实用程序。看起来很有趣的一个是Instant Eyedropper,它是免费的。您可以在这里找到有关它的更多信息:

http://instant-eyedropper.com

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10179)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到用于Excel功能区界面(Excel 2007及更高版本)的本技巧的版本:

链接:/ excelribbon-Determining_the_RGB_Value_of_a_Color [确定颜色的RGB值]。