我可以与CVErr()一起使用哪个错误号来指示Access VBA函数不会返回任何值?

时间:2018-08-08 12:19:36

标签: vba excel-vba access-vba

我可以在CVErr()中使用哪个错误号来指示Access VBA函数不会返回任何值?我拉空白。 CVErr(5)可以工作,但是我希望有一些不太通用的东西。 744(“找不到搜索文字”)接近(-ish),但仍然没有雪茄。

我正在创建一个特殊的查询功能以在访问报告中使用。如果该函数不返回任何值,我希望它返回一个ERROR#值。 Chip Pearson's discussion of this很完美,但是它是针对Excel的,必须对Access进行一些改动。

我用各种关键字(例如“零”,“未找到”,“太少”等)搜索了Error List at 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

1 个答案:

答案 0 :(得分:4)

如果要引发的错误(或在这种情况下为通过)不属于任何预定义的错误消息的类别,则应定义您自己的错误编号,并提出该错误编号。为此存在常数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

传递或提高错误号不能准确传达出真正出了问题的地方,这对呼叫者是有害的。