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
将打破代码为newcell
是Nothing
顺便说一句,如果你找一个单词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