vba range.find方法在随机单元格上停止

我写了这个快速的For循环作为我的macros的一部分,根据dewbk中的值列表在utwbk中find单元格。 循环似乎为一些细胞罚款,然后崩溃。 问题是,它每次崩溃的值不同,但值存在于utwbk。 这是我的代码:

Dim utpath As String Dim utwbk As Workbook Dim ogfund As String Dim ogcell As Range Dim newfund As String Dim newcell As Range Dim t As Long For t = 2 To tempfundlastrow If dewbk.Sheets("Macro").Cells(t, 1).Value <> "" Then Set ogcell = dewbk.Sheets("Macro").Cells(t, 1) ogfund = Trim(ogcell.Value) With utwbk.Sheets("Report").Range(Cells(1, 1), Range("AAA1").SpecialCells(xlCellTypeLastCell)) Set newcell = .Find(ogfund, LookIn:=xlValues, lookat:=xlWhole) End With newfund = newcell.Value newcell.Offset(2, 0).Value = ogcell.Offset(0, 8).Value newcell.Offset(3, 0).Value = ogcell.Offset(0, 9).Value newcell.Offset(4, 0).Value = ogcell.Offset(0, 11).Value newcell.Offset(6, 0).Value = ogcell.Offset(0, 10).Value Else 'nothing End If Next t 

代码崩溃,运行时错误91:此行上的“块variables未设置的对象variables”:

 newfund = newcell.Value 

在我定义newcell的上一行中,ogfund有一个值,我可以在utwbk中find这个值,所以不知道发生了什么。 我假设我的.Find的语法是不正确的,但我不知道如何纠正这一点。 像往常一样,任何帮助非常感谢!

在线后

 Set newcell = .Find(ogfund, LookIn:=xlValues, lookat:=xlWhole) 

input这个

 If newcell Is Nothing Then MsgBox "Not found" Exit Sub End If 

如果您看到消息框的意思。find找不到search文本,因为它找不到, newcell.Value将打破代码为newcellNothing

顺便说一句,如果你找一个单词BLAH ,在你的单元格中,你有BLAH的前导和尾随空格,那么你的.Find将找不到这个单词,因为你正在使用lookat:=xlWhole 。 也许你想要lookat:=xlPart

这是一个常见的错误。 在

 utwbk.Sheets("Report").Range(Cells(1, 1), Range("AAA1").SpecialCells(xlCellTypeLastCell)) 

Cells(1, 1)Range("AAA1")是指当前活动工作表中的范围

你可能想要的更像

 With utwbk.Sheets("Report") With .Range(.Cells(1, 1), .Range("AAA1").SpecialCells(xlCellTypeLastCell)) Set newcell = .Find(ogfund, LookIn:=xlValues, lookat:=xlWhole) End With End With 

要不就

 With utwbk.Sheets("Report").UsedRange Set newcell = .Find(ogfund, LookIn:=xlValues, lookat:=xlWhole) End With