Access / VBA如何处理除以null的除法?

时间:2014-08-20 14:29:08

标签: vba ms-access access-vba

我正在努力将遗留应用程序从MS Access / VBA转换为C#。说得客气一点,遗留代码的质量存在一些问题。 VBA代码中至少有一个点导致可能除以零(以及可能除以零,但我可以处理)。

Access / VBA如何处理除以?在大多数编程语言中,除以null的任何内容都将导致null,但VBA不是“大多数编程语言”。我的假设是,除以null应该导致null,但我想确定。我试图尽可能地模仿原始应用程序的行为,所以我需要知道此操作在Access / VBA中的行为。

2 个答案:

答案 0 :(得分:5)

我来这里参加派对很晚,但只是为了给你一些明确的东西......

根据微软的VBA规范(MS-VBALsection 5.6.9.3

•对于二进制算术运算符,除非另有说明,否则根据操作数的值类型确定有效值类型如下:

+------------------------------------------------+------------------------------------------------+----------------------+
|            Left Operand Value Type             |            Right Operand Value Type            | Effective Value Type |
+------------------------------------------------+------------------------------------------------+----------------------+
| Null                                           | Any numeric type, String, Date, Empty, or Null | Null                 |
|------------------------------------------------|------------------------------------------------|----------------------|
| Any numeric type, String, Date, Empty, or Null | Null                                           | Null                 |
+------------------------------------------------+------------------------------------------------+----------------------+

(请注意"二进制"在这种情况下是指这些运算符采用两个操作数,与"一元"不同的一个操作数)

答案 1 :(得分:3)

Null是一个有趣的价值。当您尝试将Null值分配给数据类型时,VBA编译器将抛出错误"无效使用Null",通常使用Nz()函数或简短的If Else结构。但是,对Null值执行的任何算术运算都将导致Null。

? 75 + Null
Null

? 56 * Null
Null

? 6.3 / Null
Null

? True = Null
Null

所以考虑到这种情况,是的答案是空的!