VBA查找(LookAt = xlWhole)将始终返回一个错误
我在search列A的VBA代码中具有searchfunction。列A填充了首字母缩略词,列B中的对应行是该首字母缩写词的含义。
我有一个用户表单设置,用户可以input一个首字母缩写词,如果它在文件中,它会显示一个消息框,说什么首字母缩写的意思。
我试图通过这一行search用户input的首字母缩写词的精确匹配:
Range("A:A").Find(acro, LookAt = xlWhole).Select
但是,当我运行它时,即使我复制包含首字母缩写词的单元格并将其粘贴到用户表单文本框中,它也会如同找不到它并按照我的“错误”句柄操作。
我做错了什么,使它无法find我正在寻找的缩写string?
谢谢!
@应该已经回答了,指出了真正的问题,但是要增加一些太大的评论:
最好不要直接select/激活Find():
Range("A:A").Find(acro, LookAt = xlWhole).Select
…因为这需要error handling时,找不到项目(和你发现,可以掩盖你的代码的其他问题)
尝试这样的事情,而不是:
Dim f Set f = Range("A:A").Find(acro, LookAt := xlWhole) If Not f Is Nothing then 'do something with f End If
Is Nothing
testing可避免使用error handling。
你的On Error
句柄掩盖了On Error
的真正原因。
代码应该是Range("A:A").Find(What:=acro, LookAt:= xlWhole).Select
在debugging的时候,最好是禁用error handling,因为处理错误的最终目的是为了掩盖其对用户的影响。 (这使得debugging几乎不可能)