如何用空白替换VBA公式错误

时间:2018-09-27 22:52:34

标签: excel vba

我有一个带有索引匹配公式的VBA语句。

GetMatch = WorksheetFunction.Index(Worksheets("Mapping").Range("$A$1:$E$10"), (WorksheetFunction.Match(Mid(Mystring, 1, InStr(Mystring, "_") - 1), Worksheets("Mapping").Range("$B$1:$B$10"), 0)), 4)

找不到该值时,将返回错误(#Value!)。很好,但这会在我尝试在任何操作中使用结果时引起问题。

失败的示例操作:CorrectMatch = GetMatch(MyString)

我用过On Error GoTo 0On Error GoTo NextIsError

如果出现错误,如何返回空白?

1 个答案:

答案 0 :(得分:2)

使用WorksheetFunction停止。请改用Application.Index和Application.Match,然后可以使用IsError测试返回值。

function GetMatch(str as string)

    dim m as variant

    with Worksheets("Mapping")
        m = Application.Index(.Range("$A$1:$E$10"), (Application.Match(Mid(Mystring, 1, InStr(Mystring, "_") - 1), .Range("$B$1:$B$10"), 0)), 4)
    end with

    if iserror(m) then
        GetMatch = vbnullstring
    else
        GetMatch = cstr(m)
    end if

end function