Excel VBA如果value为null,则匹配

时间:2017-09-27 09:41:11

标签: excel vba excel-vba

我在一个更大的脚本中有一段代码,它只是为" i"根据比赛。如果找到输入的值,我希望它给出匹配值,或者如果不是,则为0。如果它为0,则我可以通过向用户发送消息退出sub。但是,只要匹配找到一个空值,它就会杀死sub,而不是作为我引入的iferror的一部分进行处理。我尝试了各种检查方式(例如使用iif(iserror)),但似乎都没有。

导致问题的代码如下:

i = Application.WorksheetFunction.IfError(Application.WorksheetFunction.Match(username, EL.Range("A:A"), 0), 0)

我是一个整数

用户名是一个字符串,来自输入框

EL作为工作表变暗,并包含正确的信息。

如果我引入任何存在的名称,这绝对没有问题,只有在我输入一个不起作用的名称时它才会失败,而且我有点难以理解为什么。我认为没有理由让它失败,但我觉得我只是简单而错过了一些东西。

2 个答案:

答案 0 :(得分:3)

请改用它。使用Application而不是WorksheetFunction可以捕获并测试错误。

i = Application.IfError(Application.Match(UserName, EL.Range("A:A"), 0), 0)

答案 1 :(得分:3)

我会使用稍微不同的方法来捕获Application.Match函数上的错误:

Dim i As Variant

i = Application.Match(UserName, EL.Range("A:A"), 0)
' if Match wasn't able to found a "match"
If IsError(i) Then i = 0