问题描述
我正在经历大约500次相同类型过程的迭代,并且在第227次迭代中遇到此错误。我不确定为什么它适用于所有项目,或者为什么它在这里停止工作。通用代码如下:
sub macro()
Set ws = ThisWorkbook.Sheets("Sheet1")
for i = 1 to 500
datarange1 = "f3:f50"
Set range1 = ws.Range(datarange1)
lupValue= Application.WorksheetFunction.Min(range1)
With range1
Set cellc = .Find(lupValue,LookIn:=xlValues)
date_min = cellc.Offset(0,-4).Value
End With
next
end sub
代码在“ date_min = cellc.Offset(0,-4).Value”处停止,并出现“对象变量错误”
知道为什么会停止吗?
解决方法
如果Find
未找到匹配项,它将返回Nothing
到cellc
,这将导致运行时错误。您必须使用类似的方法对此进行检查
if Not cellc is Nothing then
date_min = cellc.Offset(0,-4).Value
Else
' ... think of a way to handle that case,maybe show an error.
End If
如果您在f3:f50
范围内的数据不包含任何数值(或根本没有数据),则Min
函数将返回0
,这可能导致Find
失败。
为什么,顺便说一句,您是否为此循环了500次?它将执行500次相同的操作(您未在任何地方使用计数器i
)