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

标签 excel ms-access vba

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

我正在创建一个特殊的查找函数以在 Access 报告中使用。如果该函数不返回任何值,我希望它返回一个 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

最佳答案

如果您要引发(或在本例中为传递)的错误不属于任何预定义错误消息的类别,则您应该定义自己的错误号并引发该错误。常量 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

传递或提出一个错误号,但不能准确传达真正发生的错误,这对调用者来说是一种伤害。

关于excel - 我可以与 CVErr() 一起使用什么错误号来指示 Access VBA 函数不会返回任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51746583/

相关文章:

c# - 如何将参数从 Excel 中的 VBA 脚本作为参数传递到外部可执行文件 (C#)?

database - 使用 OpenOffice DB 与 Microsoft Access 的主要缺点是什么?

sql - 动态创建 SQL 查询时出现语法错误

vba - Excel 中某些子字符串之间的文本格式和颜色

编程语言|如何创建一个类模块来构建对象并将它们分配给数组/集合

如果不是交互式的,来自 Microsoft Access VBA 的 mySQL 查询会失败吗?

vba - 将数字添加到文本时出错

python - 如何转换或解码 pandas DataFrame 中的 Unicode 字符?

Excel获取从第n个位置到字符串末尾的子字符串

c++ - VC++创建多个Excel工作表