【发布时间】:2017-07-06 00:35:17
【问题描述】:
我正在构建一组 VBA 函数来操作 MS-Access 数据库中的 IP 地址字符串,并且每当 IP 地址值超过整数变量的大小时,我都会遇到溢出错误的问题。我试图确保我只使用 Long 类型,但我仍然收到这些错误。这是一个非常简单的演示,由于溢出而失败,我不知道为什么。
Public Function BigNumber() As Long
Dim N256 As Long
N256 = 256
BigNumber = N256 * N256 * N256 * N256
End Function
我已经阅读了其他线程,它解释了如果表达式中的任何术语对于产品来说太小,VBA 可能会给出溢出错误,但我看不出这在这个示例中是如何应用的。谁能解释一下?
【问题讨论】:
-
你算过吗?您是否检查过文档以查看 VBA 中的有效值(下限和上限)是什么?我想你会发现溢出是正确的。 (提示:IP 地址介于 0 到 255 之间是有原因的。)
-
@RacilHilan:这可能是个好主意。我现在清理我的。很抱歉让你失望了。下次吧。 :-)
-
如果您在 64 位 Access 上运行并且不需要与 32 位 Access 兼容,则可以使用
LongLong变量类型。它与更大的数字兼容。 -
是的,我做过 RTFM。 Integer 变量可以介于 -2,147,483,648 和 2,147,483,647 之间,Long 变量可以是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。所以这不是问题