Excel VBA查找列中下一非空单元格报运行时错误91如何解决?
错误原因分析
- 第一个语法错误:VBA 中给方法的命名参数赋值时必须使用
:=运算符,你代码里的What = "*"写法错误,应该改为What:="*"。语法错误导致Find方法调用失败返回Nothing,后续调用.Row属性就会触发运行时错误91(对象变量未设置)。 - 第二个逻辑漏洞:如果A列A2之后不存在任何非空单元格,
Find方法会直接返回Nothing,此时即使参数写法正确,直接访问.Row属性依然会抛出同样的错误,需要先判断返回结果是否为有效对象。
修复后的参考代码
Dim findRng As Range ' 修正参数赋值符号,补充搜索方向参数,避免默认方向带来的问题 Set findRng = rosterSh.Columns("A").Find(What:="*", After:=rosterSh.Range("A2"), LookIn:=xlValues, SearchDirection:=xlNext) If Not findRng Is Nothing Then nextPlayerRow = findRng.Row Else ' 自定义处理未找到的场景,比如赋值为0提示无后续球员 nextPlayerRow = 0 MsgBox "A2之后未找到有效球员姓名" End If
提示:如果你的需求是跳过A2之后的空行直接找下一个非空单元格,上述代码的
SearchDirection:=xlNext参数可以确保从A2之后向下搜索,符合使用场景。
内容的提问来源于stack exchange,提问作者codeEnthusiast
相关产品推荐
相关产品推荐

