我有一个带有索引匹配公式的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
。
如果出现错误,如何返回空格?
发布于 2018-09-28 07:15:32
停止使用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
https://stackoverflow.com/questions/52546111
复制相似问题