VBA调用Find方法未查询到匹配行时运行报错问题求助
问题原因
- 你在
If判断中直接访问了.Find()返回结果的.Row属性:当Find方法没有匹配到内容时会返回Nothing,空对象不存在Row属性,直接访问就会触发运行时错误。 - 原代码还存在冗余问题:重复调用了两次
Find方法,无意义增加了执行开销。
修正后的代码
With ThisWorkbook.Sheets("TKSLIST").Range("A:A") FindRow = 1 strTKSname = ws.Cells(i + 1, 11).Text ' 先把Find结果存到Range变量,避免重复搜索 Dim rngFind As Range Set rngFind = .Find(What:=strTKSname, LookAt:=xlPart, LookIn:=xlValues, MatchCase:=False) ' 先判断对象是否为空,再访问行属性 If Not rngFind Is Nothing Then FindRow = rngFind.Row End If End With
补充说明
- 代码初始已经把
FindRow赋值为1,匹配不到内容的时候不需要重复赋值,直接保留初始值即可,逻辑更简洁。
内容的提问来源于stack exchange,提问作者KROLN
相关产品推荐
相关产品推荐

