我有一个带有索引匹配公式的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 0
,On Error GoTo Next
,IsError
。
如果出现错误,如何返回空白?
答案 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