我在搜索A列的VBA代码中有一个搜索功能。列A用首字母缩略词填充,B列中相应的行是该首字母缩略词的含义。
我有一个用户表单设置,用户可以输入首字母缩略词,如果它在文件中,它将显示一个消息框,说明该缩写词的含义。
我正在尝试通过以下行搜索用户输入的首字母缩略词的完全匹配:
Range("A:A").Find(acro, LookAt = xlWhole).Select
但是,当我运行它时,即使我复制一个包含首字母缩略词的单元格并将其粘贴到用户表单文本框中,它也会像找不到它一样,并按照我的On Error句柄。
我做错了什么使它无法找到我正在寻找的首字母缩略词?
谢谢!
答案 0 :(得分:2)
@nwhaught已经回答并指出了真正的问题,但要添加一些太大而无法评论的内容:
最好不要直接将Select / Activate链接到Find():
Range("A:A").Find(acro, LookAt = xlWhole).Select
...因为当找不到该项时(并且您发现可以掩盖代码的其他问题)需要进行错误处理
尝试这样的事情:
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
测试避免使用错误处理。
答案 1 :(得分:1)
您的On Error
句柄正在掩盖错误的真正原因。
代码应为Range("A:A").Find(What:=acro, LookAt:= xlWhole).Select
调试时,最好禁用错误处理,因为处理错误的重点是掩盖其对用户的影响。 (这使调试几乎不可能)