首页 文章

Excel VBA如果value为null,则匹配

提问于
浏览
2

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

导致问题的代码如下:

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

我是一个整数的暗淡

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

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

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

2 回答

  • 3

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

    i = Application.IfError(Application.Match(UserName, EL.Range("A:A"), 0), 0)
    
  • 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
    

相关问题