【问题标题】:Color Entire Row Based on Cell Value根据单元格值对整行着色
【发布时间】:2020-01-20 02:15:33
【问题描述】:

如果该行中的两个单元格具有相同的值,我会尝试为整行着色。

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    将 ColorIndex 更改为 Color。

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

    【讨论】:

      【解决方案2】:

      有谁知道是什么导致了这个错误?

      来自ColorIndex 属性上的MSDN help

      ColorIndex 属性可以具有介于 0 和 56 产生颜色。但是,您可以分配小数或字符串 属性的值,而不会产生运行时错误。在这些 例如,Excel 会尝试随机应用与 参数值。但是,将属性设置为整数值 超出 0 到 56 的范围会导致以下错误:

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

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

      请注意,ColorIndexColor 不同,后者使用 RGB 规范,用途更广泛。有关ColorColorIndex here 的更多信息。

      我个人更喜欢使用Color 和内置的VBA Color Enumerations vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyanvbWhite。对于大多数应用程序来说,这些就足够了,但如果需要更多颜色,那么using a custom enumeration color is also possible,比查找 RGB 表更优雅..

      我希望这会有所帮助!

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-25
        • 2020-11-26
        • 2019-04-19
        • 1970-01-01
        • 2022-12-08
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        相关资源
        最近更新 更多