Excel使用由56种颜色组成的调色板。如果显示“设置单元格格式”对话框的“图案”选项卡,则可以看到这些颜色。

在VBA中创建宏时,您可能需要使用常量通过名称来引用这些颜色。

不幸的是,Excel的VBA没有为调色板中的56种颜色定义常量。通过名称定义的唯一颜色是ColorConstants类的成员,并且该类有8个成员:vbBlack,vbWhite,vbRed,vbGreen,vbBlue,vbYellow,vbMagenta和vbCyan。

在VBA中,您可以使用ColorIndex属性来定义要从Excel的调色板中使用的颜色。问题在于ColorIndex不是颜色;它是调色板的索引。因此,ColorIndex为1是调色板中的第一种颜色,2是第二种,依此类推。您可以通过以下URL上的示例代码来查看实际情况:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

此代码检查单元格的ColorIndex属性并返回颜色名称。但是,返回的名称不是颜色的常数。这只是该索引处的调色板看起来是什么颜色的描述。

如果要设置单元格的颜色,则实际上应使用Color属性。此属性使您可以使用前面提到的八个VBA颜色常量。碰巧的是,如果您使用这些Color属性设置单元格的内部颜色,则会发现这8种命名的颜色与1到8的ColorIndex值相对应。下面的宏很好地说明了这一点:

Sub CheckColors()

Dim arr8Colors As Variant     Dim i As Integer

arr8Colors = Array( _       vbBlack, vbWhite, vbRed, vbGreen, _       vbBlue, vbYellow, vbMagenta, vbCyan)

For i = 0 To 7         Selection.Offset(i, 0).Interior.Color = arr8Colors(i)

Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex     Next i End Sub

Color和ColorIndex之间的前八个值的这种对应关系仅应视为历史的产物,其历史可以追溯到Excel仅允许您使用八种颜色(用VBA常量定义的八种颜色)的年代。如果要为单元格指定其他颜色,则应使用RGB函数指定Color属性,如下所示:

Selection.Interior.Color = RGB(128, 64, 255)

RGB功能允许您指定任何颜色的红色,绿色和蓝色分量。每个分量的值范围可以从0到255。

注意:

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

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

本技巧(2778)适用于Microsoft Excel 97、2000、2002和2003。