我有一个vba代码,我将用它来寻找符合2个标准的值。 在大多数情况下,vba返回预期值 但如果我更改标准,或者如果我输入的标准不在我查看的范围内,则VBA返回错误的值。 如果不符合标准,我宁愿有一个文本" CriteriasNotMet"显示为H2
的结果我的代码是:
Sub IndexMatch()
myName = [F2]
mySubject = [G2]
mark = Application.WorksheetFunction.Index([StMark], _
Application.WorksheetFunction.Match(myName, ([StName]), 0) + _
Application.WorksheetFunction.Match(mySubject, ([StSubject]), 0) - 1)
[H2] = mark
End Sub
任何人都可以解释我做错了什么吗?
谢谢你和上帝之后
彼得 丹麦
答案 0 :(得分:0)
Application.WorksheetFunction.FunctionHere
如果出现错误(例如找不到匹配项),会抛出运行时错误,而
Application.FunctionHere
将返回结果或错误值,您可以使用IsError()
这对-1
调整没有帮助,所以你不能在一行代码中完成所有这些:你需要先测试每个返回值,然后再将它们传递给Index()
< / p>
Sub IndexMatch()
Dim subIndx, nmIndx, mark
subIndx = Application.Match([G2], [StSubject], 0)
nmIndx = Application.Match([F2], [StName], 0)
If Not IsError(subIndx) And Not IsError(nmIndx) Then
mark = Application.Index([StMark], nmIndx, subIndx - 1)
Else
mark = "No Match"
End If
[H2] = mark
End Sub