VBA查找(LookAt=xlWhole)总会return出错
VBA Find (LookAt=xlWhole) will always return an error
我在 VBA 代码中有一个搜索功能,可以搜索 A 列。A 列中填满了首字母缩写词,B 列中的相应行是该首字母缩写词的含义。
我有一个用户表单设置,用户可以输入首字母缩写词,如果它在文件中,它会显示一个消息框,说明该首字母缩写词的含义。
我正在尝试通过以下行搜索与用户输入的首字母缩略词完全匹配的内容:
Range("A:A").Find(acro, LookAt = xlWhole).Select
然而,当我 运行 它时,即使我复制一个包含首字母缩写词的单元格并将其粘贴到用户表单文本框中,它也会像找不到它一样并遵循我的 On Error手柄。
我做错了什么导致它无法找到我要查找的首字母缩略词字符串?
谢谢!
您的 On Error
句柄掩盖了错误的真正原因。
代码应该是Range("A:A").Find(What:=acro, LookAt:= xlWhole).Select
调试时,最好禁用错误处理,因为处理错误的全部意义在于向用户掩盖其影响。 (这使得调试几乎不可能)
@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
测试避免使用错误处理。
我在 VBA 代码中有一个搜索功能,可以搜索 A 列。A 列中填满了首字母缩写词,B 列中的相应行是该首字母缩写词的含义。
我有一个用户表单设置,用户可以输入首字母缩写词,如果它在文件中,它会显示一个消息框,说明该首字母缩写词的含义。
我正在尝试通过以下行搜索与用户输入的首字母缩略词完全匹配的内容:
Range("A:A").Find(acro, LookAt = xlWhole).Select
然而,当我 运行 它时,即使我复制一个包含首字母缩写词的单元格并将其粘贴到用户表单文本框中,它也会像找不到它一样并遵循我的 On Error手柄。
我做错了什么导致它无法找到我要查找的首字母缩略词字符串?
谢谢!
您的 On Error
句柄掩盖了错误的真正原因。
代码应该是Range("A:A").Find(What:=acro, LookAt:= xlWhole).Select
调试时,最好禁用错误处理,因为处理错误的全部意义在于向用户掩盖其影响。 (这使得调试几乎不可能)
@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
测试避免使用错误处理。