我正在写一些vba函数。
特别是,我正在重写VLOOKUP ...
在这个MY_VLOOKUP中,我有两个 bool(boolean) 变量:
1. error_range,如果在公式参数中传递的范围无效,则为true
2. not_ava,如果没有结果,则为true(VLOOKUP结果为#N/A)
在错误处理程序部分,我写道
Errorhandler:
If error_range Then error_cat = xlErrRef
If not_ava Then error_cat = xlErrNA
Err.Raise error_cat
但我在单元格中收到“#VALUE”错误。
调试时,我意识到err.raise不起作用并生成此“#VALUE”错误
如何在单元格中出现“#N/D”或“#REF”错误?
最佳答案
使用Excel公式时,您会得到很多错误。它们可以像#Ref
,#Value
,#N/A
,#Name
等。
我通常使用CVERR()
捕获此类错误。这是一个例子。
Sub Sample()
Dim Ret As Variant
Dim error_cat As Long
On Error GoTo Whoa
Ret = Application.Evaluate("=VLOOKUP(12,SiddharthRout,1,0)") '<~~ Invalid Range
'Ret = Application.Evaluate("=VLOOKUP(12,D3:G7,1,0)") '<~~ No Value found
Select Case CVErr(Ret)
Case CVErr(xlErrName): error_cat = xlErrName
Case CVErr(xlErrNA): error_cat = xlErrNA
Case CVErr(xlErrRef): error_cat = xlErrRef
Case CVErr(xlErrValue): error_cat = xlErrValue
End Select
If error_cat <> 0 Then Err.Raise error_cat
LetsContinue:
MsgBox "Phew!"
Exit Sub
Whoa:
MsgBox "Error Error Damn Error"
Resume LetsContinue
End Sub
关于vba - 在VBA函数中管理典型的Excel公式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436187/