根据另一个单元格的值更改单元格颜色

时间:2013-06-17 14:14:37

标签: excel vba colors find

我正在尝试运行一个代码,按下按钮,从另一个工作表中的列(“H”)中找到一个单元格(标记为“MFG PNs”),并将其值与在单元格中输入的内容匹配“Z21 “在我的标签上写着”SPC“。一旦找到H中的单元格,我试图将同一行中的Q列中的相应单元格更改为不同的颜色。

我目前收到此错误消息:“运行时错误9,下标超出范围” 它出现在代码的颜色变化部分。

Sub Approve_Click()

   Dim r As Long
    Dim m As Long
    m = Sheets("MFG PNs").Range("H3:H1200").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    For r = 1 To m
        If Sheets("MFG PNs").Range("H" & r) = Sheets("SPC").Range("Z21") Then
            Sheets("MFG PNs").Range("Q" & r).Interior.ColorIndex = RGB(0, 97, 0)
        End If
    Next r

End Sub

2 个答案:

答案 0 :(得分:0)

颜色索引是从1到56的值(见下文).RGB颜色值通常比这大一点。

您可以将.ColorIndex更改为.Color并输入适当的颜色,或将RGB(0,97,0)更改为特定的索引值。

VBA代码可用 here ,可在工作表上生成颜色索引和值。

Color Index

答案 1 :(得分:0)

在测试代码时,我确实发现了另一个问题:当找不到目标字符串(“*”)时崩溃。以下更正应考虑到:

    Set cell = Sheets("MFG PNs").Range("H3:H1200").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)

    If (Not cell Is Nothing) Then
       For r = 1 To cell.Row
        'YOUR CODE
       Next r
    End If