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

use*_*788 11 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
Run Code Online (Sandbox Code Playgroud)

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

Ioa*_*nis 12

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

MSDN对该ColorIndex属性的帮助:

ColorIndex属性可以具有0到56之间的有效整数参数,以生成颜色.但是,您可以为属性分配十进制或字符串值,而不会生成运行时错误.在这些情况下,Excel会尝试随机应用与参数值对应的颜色.但是,将属性设置为0到56范围之外的整数值会导致以下错误:

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

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

在此输入图像描述

注意ColorIndex不同于Color,它使用RGB规范并且更通用.关于更多信息ColorVS ColorIndex 这里.

我个人更喜欢使用Color和内置的VBA颜色枚举 vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan,和vbWhite.对于大多数应用程序来说这些都足够了,但如果需要更多颜色,那么使用自定义枚举颜色也是可能的,并且比查找RGB表格更优雅.

我希望这有帮助!


Pav*_*l_V 12

将ColorIndex更改为Color.

Cells(i, 1).EntireRow.Interior.Color = 5296274
Run Code Online (Sandbox Code Playgroud)