基于单元格值的VBA颜色整行

时间:2014-07-28 17:22:00

标签: excel vba excel-vba

如果该行中的两个单元格具有相同的值,我正在尝试为整行着色。这是我现在的代码:

For i = 2 To LastRow
    If Worksheets("Request Results").Cells(i, 4).Value <> Worksheets("Request Results").Cells(i, 6).Value Then
        Cells(i, 1).EnitreRow.Interior.ColorIndex = 255
    ElseIf Worksheets("Request Results").Cells(i, 4).Value = Worksheets("Request Results").Cells(i, 6).Value Then
        Cells(i, 1).EntireRow.Interior.ColorIndex = 5296274
    End If
Next i

循环首先进入else语句,我在Cells(i, 1).EntireRow.Interior.ColorIndex = 5296274行上得到“下标超出范围”错误,我不太清楚为什么。有谁知道可能导致此错误的原因是什么?我尝试过的一切都失败了。

3 个答案:

答案 0 :(得分:12)

将ColorIndex更改为Color。

Cells(i, 1).EntireRow.Interior.Color = 5296274

答案 1 :(得分:11)

  

有谁知道可能导致此错误的原因?

来自ColorIndex财产的MSDN help

  

ColorIndex属性可以包含0到0之间的有效整数参数   56,产生颜色。但是,您可以指定十进制或字符串   值的属性,而不会生成运行时错误。在这些   实例,Excel尝试随机应用对应的颜色   参数值。但是,将属性设置为整数值   超出0到56范围会导致以下错误:

     

运行时错误'9':下标超出范围

您可以在同一页面上找到带有效索引的调色板:

enter image description here

请注意,ColorIndexColor不同,Color使用RGB规范,功能更多。有关ColorIndex vs Color here的更多信息。

我个人更喜欢使用vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan和内置VBA Color Enumerations vbWhite以及{{1}}。对于大多数应用来说,这些都足够了,但如果需要更多颜色using a custom enumeration color is also possible,并且比查找RGB表更优雅..

我希望这有帮助!

答案 2 :(得分:0)

我在类似的行突出显示问题上使用了类似的方法。

For Each Rng in SomeRange.Columns(1).Cells
  Rng.EntireRow.Interior.Color = 5296274
Next