VBA range.find错误91

时间:2018-02-01 17:18:48

标签: excel vba excel-vba runtime-error runtime

以下代码尝试滚动一系列列并格式化每列中的最大值。

以前它已达到某一点。最有可能失败,因为它正在搜索公式中的值。

然而,现在它甚至不会在第一列成功。

我已经验证了范围对象已设置,必须找到最大值,并且我还尝试仅搜索我知道在该范围内的特定数字。

在任何情况下都会发生同样的错误。我相信错误是在  rw = rng.Find(max).rowwith块。

下面粘贴代码,非常感谢任何帮助。

Sub testMaxRetail()

Dim max As Double
Dim rng As Range
Dim rw As Integer
Dim cell As Variant
Dim colCnt As Integer
Dim i As Integer

colCnt = 12

For i = 2 To colCnt

    Set rng = Sheets("Annual").Range(Cells(1, i).Address, Cells(6000, i).Address)

    'clearing old formatting
    For Each cell In rng
        If cell.Interior.ColorIndex = 6 And cell.Font.Bold = True Then
            cell.Interior.ColorIndex = 2
            cell.Font.Bold = False
        End If
    Next cell

    max = Application.WorksheetFunction.max(Sheets("Annual").Range(Cells(1, i), Cells(6000, i)))

    rw = rng.Find(max).Row


    With Sheets("Annual").Cells(rw, i)
        .Interior.ColorIndex = 6
        .Font.Bold = True
    End With

    Set rng = Nothing
Next i

End Sub

1 个答案:

答案 0 :(得分:0)

Change this:

rw = rng.Find(max).Row

for this:

rw = rng.Find(What:=max, LookIn:=xlValues).Row

In order to find formula value.

The with statement is not causing the error.