.Find()运行时错误'91':对象variables或块variables未设置

我知道其他问题已经被问到了同样的错误,但没有接近我的。 我试图find在哪里我可以findvariables实验室在B列中的值与一个循环多次(实验室值变化)的行,它的作品第一次,但第二次,我得到这个错误。

For Each lab In arr NFD = el & " " & Sheets("Sheet1").Cells(1, 3).value If SheetExists(NFD) Then Worksheets(NFD).Activate Dim FindRow As Range Dim FindRowNumber As Long Set FindRow = Sheets(NFD).Range("B:B").Find(What:=lab, LookIn:=xlValues) FindRowNumber = FindRow.Row 'error on this line MsgBox FindRowNumber End If Next 

编辑1:这是任何人有兴趣的工作代码:

 For Each lab In arr If lab <> "" Then lab = Trim(lab) 'Find element Sheet NFD = el & " " & Sheets("Sheet1").Cells(1, 3).value If SheetExists(NFD) Then 'Find lab number row in colunm B Set FindRow = Sheets(NFD).Range("B:B").Find(What:=lab, LookIn:=xlValues) If FindRow Is Nothing Then Debug.Print "Nothing Found" Else FindRowNumber = FindRow.Row End If End If End If Next 

您可能需要检查是否有任何东西被发现。 如果项目不在那里,FindRow将是'Nothing'。

 If FindRow Is Nothing Then MsgBox "Nothing Found" 'you can set FindRowNumber to something here if you want, like 0 or -1 Else FindRowNumber = FindRow.Row MsgBox FindRowNumber End If 

评论问题后编辑我的testing代码是:

 Sub test() Dim arr(0 To 2) As String Dim lab As Variant Dim FindRow As Range Dim FindRowNumber As Long arr(0) = "aaa" arr(1) = "bbb" arr(2) = "ccc" For Each lab In arr Set FindRow = Sheets("Sheet1").Range("B:B").Find(What:=lab, LookIn:=xlValues) If FindRow Is Nothing Then Debug.Print "Nothing Found" 'you can set FindRowNumber to something here if you want, like 0 or -1 Else FindRowNumber = FindRow.Row Debug.Print FindRowNumber End If Next End Sub 

在单元格B1,B2和B3中分别有'aaa','bbb'和'ccc',它们都按预期工作,在debugging控制台中打印1,2和3。