VBA中Find查找结果回赋值给原变量的代码含义咨询
VBA代码疑问解答
你对这行代码的理解是完全正确的,我们可以拆分这段逻辑逐一确认:
涉及的代码行:Set rngLookup = CurrWPWkSht.Columns("A").Find(rngLookup, lookat:=xlPart)
- 查找范围:
CurrWPWkSht.Columns("A")明确限定了查找范围是CurrWPWkSht这个工作表的A列整列 - 查找规则:
Find方法的第一个参数就是要查找的内容,这里调用的就是原rngLookup变量存储的值;lookat:=xlPart表示采用部分匹配规则,只要单元格内容包含目标值就算匹配成功 - 赋值逻辑:由于
rngLookup是Range类型的对象变量,VBA中给对象赋值必须用Set关键字,因此会把Find返回的第一个匹配到的单元格对象,重新赋值给原rngLookup变量
额外注意:如果A列没有符合条件的匹配内容,
Find方法会返回Nothing,此时rngLookup会被覆盖为空对象,后续直接调用它的属性(比如rngLookup.Value、rngLookup.Address)会触发运行时错误,建议添加非空判断再进行后续操作,示例如下:
Set rngLookup = CurrWPWkSht.Columns("A").Find(rngLookup, lookat:=xlPart) If Not rngLookup Is Nothing Then ' 匹配成功后的业务逻辑 Debug.Print "匹配到的单元格地址:" & rngLookup.Address Else ' 未匹配到的兜底逻辑 Debug.Print "A列未找到符合条件的内容" End If
内容的提问来源于stack exchange,提问作者baronbeef
相关产品推荐
相关产品推荐

