0

我正在尝试运行一个代码,该代码在按下按钮后会从另一张表(标记为“MFG PNs”)的列(“H”)中找到一个单元格,并将其值与我的单元格“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
4

2 回答 2

0

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

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

此处提供了VBA 代码,可在工作表上生成颜色索引和值。

颜色索引

于 2013-06-17T14:21:38.383 回答
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
于 2013-06-17T14:36:53.983 回答