spi*_*tor 4 vba excel-vba access-vba
我可以与CVErr()一起使用哪个错误号来指示Access VBA函数不会返回任何值?我拉空白。CVErr(5)可以工作,但是我希望有一些不太通用的东西。744(“找不到搜索文字”)接近(-ish),但仍然没有雪茄。
我正在创建一个特殊的查询功能以在访问报告中使用。如果该函数不返回任何值,我希望它返回一个ERROR#值。Chip Pearson对此的讨论是完美的,但是它是针对Excel的,必须对Access进行一些更改。
我已经在FMS上使用各种关键字(例如“零”,“未找到”,“太少”等)搜索了错误列表。列表中有成千上万个错误,因此无需任何帮助就可以将其减少实际阅读整个列表将不胜感激。
例:
Function MyLookup(param1) as Variant
'..............
'...do stuff...
'..............
If SomethingBad = True Then
MyLookup = VBA.CVErr(N) 'What here for N?
Exit Function
Endif
End Function
Run Code Online (Sandbox Code Playgroud)
如果要引发(或在这种情况下为通过)的错误未属于任何预定义的错误消息的类别,则应定义自己的错误号并将其引发。vbObjectError
为此存在常数-将其添加到您的内部号码中并传递该常数:
Public Const SOMETHING_BAD_ERROR As Long = vbObjectError + 666
Function MyLookup(param1) As Variant
'..............
'...do stuff...
'..............
If SomethingBad = True Then
MyLookup = VBA.CVErr(SOMETHING_BAD_ERROR)
Exit Function
End If
End Function
Run Code Online (Sandbox Code Playgroud)
传递或引发不能准确传达真正出了问题的错误号对呼叫者是有害的。